ERLEDIGT
JA
JA
ANTWORTEN
15
15
ZUGRIFFE
991
991
EMPFEHLEN
-
Hallo erstemal
,
Ich habe ein kleines Tool geschrieben womit ich Programme starten kann und deren Status abfragen kann.
Aber das Problem ist, wenn ich das Tool schließe und wieder starte zeigt er mir das Programm als Not running an.
Gibt es da eine möglichkeit das der Status beim starten des Tools aktualisiert wird?
Dann habe ich da noch ein Problem, wenn ich mehrere Programme starten möchte über ein button dann zeigt er sie an als running, aber sobald ich eins ausschalte davon dann stehen trotzdem alle als running da.
Ich habe erste mal die anzeige von allen Programmen rausgenommen, so das es erste mal um die eine Funktion geht.
Das mit dem Menü bekomme ich auch noch nicht hin ich habe das so gemacht das wenn ich eine neue Seite aufrufe das er dann die erste Seite schließen tut, ich wollte das aber so haben das er die neue Seite unter dem Menü laden tut, also sozusagen als iframe.
Ich füge euch mal die Dateien hinzu hoffe ihr könnt mir da was zaubern, weil soviel ahnung habe ich ja auch noch nicht davon.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
Private Declare Function CloseHandle Lib "kernel32" (ByVal _ hObject As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal _ dwDesiredAccess As Long, ByVal bInheritHandle As _ Long, ByVal dwProcessId As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" _ (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Function ShellExecute _ Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Private Declare Sub Sleep _ Lib "kernel32" ( _ ByVal dwMilliseconds As Long) Const STILL_ACTIVE = &H103 Const PROCESS_ALL_ACCESS = &H1F0FFF Dim TaskID& Private Function IsActive() As Boolean Dim Handle&, ExitCode& Handle = OpenProcess(PROCESS_ALL_ACCESS, False, TaskID) Call GetExitCodeProcess(Handle, ExitCode) Call CloseHandle(Handle) IsActive = IIf(ExitCode = STILL_ACTIVE, True, False) End Function Private Sub cmdStartMIRC_Click() TaskID = Shell("D:\Westwood\Game\AOW\mIRC\mircAOW.exe", vbNormalFocus) Timer1.Interval = 500 Timer1.Enabled = True cmdStartMIRC.Enabled = False End Sub Private Sub start_seite_Click() start.Show Unload Me End Sub Private Sub Timer1_Timer() If IsActive Then lblMIRC.Caption = "Running !" Else lblMIRC.Caption = "Not running !" Timer1.Enabled = False cmdStartMIRC.Enabled = True End If End Sub '----------------Alles aufeinmal starten-------- Private Sub cmdStartAll_Click() TaskID = Shell("D:\Westwood\Game\AOW\mIRC\mircAOW.exe", vbNormalFocus) cmdStartAll.Enabled = False Sleep 4000 cmdStartAll.Enabled = True TaskID = Shell("D:\Westwood\Game\AOW\RenegadeFDS\Server\AOWServer.exe", vbNormalFocus) cmdStartAll.Enabled = False Sleep 4000 cmdStartAll.Enabled = True TaskID = ShellExecute(hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot\AOW_BR.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server\BRenBot", 1) cmdStartAll.Enabled = False Sleep 4000 cmdStartAll.Enabled = True TaskID = ShellExecute(hwnd, "open", "D:\Westwood\Game\AOW\RenegadeFDS\Server\AOW-TS-AUTO-SWITCH.lnk", "", "D:\Westwood\Game\AOW\RenegadeFDS\Server", 1) End Sub
Tool
Leider konnte ich die datei hier über diese HP nicht hochladen, daher habe ich sie auf mein root server geladen.
Ich versichere das diese datei keine viren oder der gleichen beinhaltet.
Am wichtiegsten ist mir das wenn ich die seite aufrufe wo die info ist das er nach schaut ob die programme schon laufen oder nicht.Geändert von ATdrag0N (14.10.07 um 22:59 Uhr)
-
Also ein Fehler wäre, das wenn du das Programm schliesst und wieder öffnest wird der Timer nicht gesetzt dadurch bekommst du keine Aktualisierung hin. -> im Form Load den Timer setzten
Grüsse bbDon't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.
-
Wie muss ich denn timer setzen habe da jetzt einiges ausprobiert aber er zeigt es mir nicht als running an.
Also es handelt sich nicht um das Programm was ich mit dem Tool starte, wenn ich das Programm über denn button starte zeigt er es mir ja an das es running ist, und wenn ich das Programm was ich über denn button gestartet habe schließe ändert sich das auch gleich zum not running.
Aber wenn ich das Tool schließe mit was ich die Programme starte und dann das Tool wieder starte steht da not running.
Könnte mir jemand denn Code erweitern auf die Funktion das er denn Status anzeigt wenn ich das Programm wieder starte ?
Also denn timer?
BITTE BITTE
hört sich kindisch an ich weiß
Geändert von ATdrag0N (16.10.07 um 01:02 Uhr)
-
eigentlich nur so
Code vb:1 2
Timer1.Interval = 500 Timer1.Enabled = True
dann solltest du mal einen stoppunkt in isactive setzen, hier ist wahrscheinlich deine TaskId =0
ich vermute mal das du dir die erst über die Api mit fensternamen holen musst. ( hierfür empfehle ich die Suche !)
Grüsse bbDon't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.
-
Hallo,
das Problem mit dem aktualisieren ist gelöst, nun habe ich ein anderes Problem
.
Ich bin gestern auf visual basic 2005 express edition umgestiegen und da erkennt der denn ein Befehl nicht an.
Code :1
lblMIRC.Caption
Das ist der complete code bis jetzt, er mekert nur wegen der sache da oben rum.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
Public Class test Private Declare Function CloseHandle Lib "kernel32" (ByVal _ hObject As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal _ dwDesiredAccess As Long, ByVal bInheritHandle As _ Long, ByVal dwProcessId As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" _ (ByVal hProcess As Long, ByVal lpExitCode As Long) As Long Private Declare Function ShellExecute _ Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Private Declare Sub Sleep _ Lib "kernel32" ( _ ByVal dwMilliseconds As Long) Const STILL_ACTIVE = &H103 Const PROCESS_ALL_ACCESS = &H1F0FFF Dim TaskID& Private Function IsActive() As Boolean Dim Handle&, ExitCode& Handle = OpenProcess(PROCESS_ALL_ACCESS, False, TaskID) Call GetExitCodeProcess(Handle, ExitCode) Call CloseHandle(Handle) IsActive = IIf(ExitCode = STILL_ACTIVE, True, False) End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TaskID = Shell("C:\Programme\ICQLite\ICQLite.exe", vbNormalFocus) Timer1.Enabled = True Button1.Enabled = False End Sub Private Sub Timer1_Timer() If IsActive Then lblMIRC.Caption = "Running !" Else lblMIRC.Caption = "Not running !" Timer1.Enabled = False Button1.Enabled = True End If End Sub End Class
Ich bin darauf umgestiegen, weil ich ein Menü gebaut habe wo die aktuellen Daten erhalten bleiben.
Ach eh ich es vergesse, wenn ich das Programm beende was ich über denn button gestartet habe dann wird der button nicht mehr drückbar, wo kann da der Fehler liegen ?
-
VB 2005 ist ein anderes Forum und da ich keinen VB2005 Compiler auf demn rechner habe kann ich dir nicht mehr weiterhelfen versuch es mal im .Net Forum
Grüsse bbDon't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.
-
Ne ganz banale Frage,
heißen die Labels auch wirklich so ?
Also hast du die im neuem Compiler auch umbenannt etc ?
Vermute liegt einfach nur am Namen das er meckert
- work as if you don't need money,
- love as if you've never been hurt,
- dance as if nobody can see,
- sing as if no one can hear,
- live as if Earth was heaven.
by somebody
„Quis custodiet ipsos custodes“ – Wer wacht über die Wächter?
-
Wenn ich die labels so umbenne das sie so heißen wie sie da stehen: lblMIRC
dann meckert er deswegen rumm: "Running !"
Fehlermeldung heißt denn da:
Der Wert vom "string" kann nicht zu " System.Windows.Forms.Label" konvertiert werden.
Und wenn ich das label direkt so umbenne dann kommt :
Der Bezeichner lblMIRC.Caption ist ungültig.
-
Weiß jemand ob ich das Menü von dem übernehmen kann zum 6
-
wie gesagt poste im .Net Forum
Don't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.
-
Ja ist ja ok @ brainbyte
Habe das schon gelöst habe denn visual basic 6 installiert und dann mit dem 2005 die programmierten Tools umgewandelt.
Das geht einwandfrei.
Nur noch eins kann mir einer ein Code für das visual Basic geben wie ich Programme beenden kann?
Zumbeispiel das mirc was ich im ersten Code starte das möchte ich beenden.
-
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
Option Explicit Private Declare Function CloseHandle Lib "kernel32" (ByVal _ hObject As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal _ dwDesiredAccess As Long, ByVal bInheritHandle As _ Long, ByVal dwProcessId As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" _ (ByVal hProcess As Long, lpExitCode As Long) As Long Const STILL_ACTIVE = &H103 Const PROCESS_ALL_ACCESS = &H1F0FFF Dim TaskID& Private Function IsActive() As Boolean Dim Handle&, ExitCode& Handle = OpenProcess(PROCESS_ALL_ACCESS, False, TaskID) Call GetExitCodeProcess(Handle, ExitCode) Call CloseHandle(Handle) IsActive = IIf(ExitCode = STILL_ACTIVE, True, False) End Function Private Sub Command1_Click() Shell "notepad.exe", vbNormalFocus TaskID = "notepad.exe" Timer1.Interval = 500 Timer1.Enabled = True Command1.Enabled = False End Sub Private Sub Timer1_Timer() If IsActive Then lblMIRC.Caption = "NotePad Läuft noch" Else lblMIRC.Caption = "NotePad Läuft nicht mehr" Timer1.Enabled = False Command1.Enabled = True End If End Sub
Was ist hier falsch TaskID = "notepad.exe" damit möchte ich festellen ob der task leuft oder nicht.
Ich brauche das so, weil ich eine verknüpfung starten möchte und daher muss ich die exe nochmal angeben das er schaut ob die da ist.
Und mir das dann anzeigt.
-
Für Task id wird eine Zahl benötigt wie in post #4 bereits gesagt musst du dir die Taskid auch über eine Api holen um dann zu schauen ob der task noch läuft.
Ich glaube die heist irgendwie *gettaskbyname oder so
Grüsse bbDon't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.
-
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
Option Explicit Private Declare Function CloseHandle Lib "kernel32" (ByVal _ hObject As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal _ dwDesiredAccess As Long, ByVal bInheritHandle As _ Long, ByVal dwProcessId As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" _ (ByVal hProcess As Long, lpExitCode As Long) As Long Const STILL_ACTIVE = &H103 Const PROCESS_ALL_ACCESS = &H1F0FFF Dim TaskID& Private Function IsActive() As Boolean Dim Handle&, ExitCode& Handle = OpenProcess(PROCESS_ALL_ACCESS, False, TaskID) Call GetExitCodeProcess(Handle, ExitCode) Call CloseHandle(Handle) IsActive = IIf(ExitCode = STILL_ACTIVE, True, False) End Function Private Sub Command1_Click() TaskID = Shell("notepad.exe", vbNormalFocus) Timer1.Interval = 500 Timer1.Enabled = True Command1.Enabled = False End Sub Private Sub Timer1_Timer() If IsActive Then lblMIRC.Caption = "NotePad Läuft noch" Else lblMIRC.Caption = "NotePad Läuft nicht mehr" Timer1.Enabled = False Command1.Enabled = True End If End Sub
Du verstehst mich nicht, so wie das jetzt da steht geht es, er zeigt mir denn status an das das programm leuft.
Ich möchte aber eine verknüpfung starten, und da zeigt er es mir nicht an deswegen habe ich es geteilt in dem oben stehen post.
Und da haut was mit der variable nicht hin: TaskID = "notepad.exe"
-
Wenn du die Verknüpfung startest brauchst du den Namen der dahinterliegenden Anwendung und wenn du diese hast musst du dir die TASK ID holen (Zahl)
gucktst du hier
http://www.vbarchiv.net/archiv/tipp_details.php?pid=645Geändert von Alex F. (18.10.07 um 09:43 Uhr) Grund: link eingefügt
Don't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.
Ähnliche Themen
-
anfänger sucht hilfe
Von rabbitv2 im Forum BlenderAntworten: 0Letzter Beitrag: 12.02.10, 21:14 -
Hilfe! Flash Anfänger sucht schnelle Hilfe!
Von Skydiver2004 im Forum Flash PlattformAntworten: 2Letzter Beitrag: 02.12.04, 20:26 -
Programmier Anfänger sucht Hilfe
Von Lira im Forum Delphi, Kylix, PascalAntworten: 6Letzter Beitrag: 26.04.04, 13:25 -
Anfänger sucht Hilfe
Von patmey im Forum PHPAntworten: 3Letzter Beitrag: 10.01.04, 19:02 -
Anfänger sucht hilfe!
Von DaBoss im Forum Sonstige 3D-ProgrammeAntworten: 0Letzter Beitrag: 17.10.02, 11:36





Zitieren
Login





