tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
15
ZUGRIFFE
991
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ATdrag0N ATdrag0N ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    130
    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)
     

  2. #2
    Avatar von Alex F.
    Alex F. Alex F. ist offline Mitglied Smaragd
    Registriert seit
    Jul 2004
    Beiträge
    1.034
    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 bb
     
    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.

  3. #3
    ATdrag0N ATdrag0N ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    130
    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)
     

  4. #4
    Avatar von Alex F.
    Alex F. Alex F. ist offline Mitglied Smaragd
    Registriert seit
    Jul 2004
    Beiträge
    1.034
    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 bb
     
    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.

  5. #5
    ATdrag0N ATdrag0N ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    130
    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 ?
     

  6. #6
    Avatar von Alex F.
    Alex F. Alex F. ist offline Mitglied Smaragd
    Registriert seit
    Jul 2004
    Beiträge
    1.034
    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 bb
     
    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.

  7. #7
    Registriert seit
    Apr 2004
    Ort
    /usr/lexz
    Beiträge
    130
    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?

  8. #8
    ATdrag0N ATdrag0N ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    130
    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.
     

  9. #9
    ATdrag0N ATdrag0N ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    130
    Weiß jemand ob ich das Menü von dem übernehmen kann zum 6
     

  10. #10
    Avatar von Alex F.
    Alex F. Alex F. ist offline Mitglied Smaragd
    Registriert seit
    Jul 2004
    Beiträge
    1.034
    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.

  11. #11
    ATdrag0N ATdrag0N ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    130
    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.
     

  12. #12
    ATdrag0N ATdrag0N ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    130
    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.
     

  13. #13
    Avatar von Alex F.
    Alex F. Alex F. ist offline Mitglied Smaragd
    Registriert seit
    Jul 2004
    Beiträge
    1.034
    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 bb
     
    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.

  14. #14
    ATdrag0N ATdrag0N ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    130
    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"
     

  15. #15
    Avatar von Alex F.
    Alex F. Alex F. ist offline Mitglied Smaragd
    Registriert seit
    Jul 2004
    Beiträge
    1.034
    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=645
    Geä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

  1. anfänger sucht hilfe
    Von rabbitv2 im Forum Blender
    Antworten: 0
    Letzter Beitrag: 12.02.10, 21:14
  2. Hilfe! Flash Anfänger sucht schnelle Hilfe!
    Von Skydiver2004 im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 02.12.04, 20:26
  3. Programmier Anfänger sucht Hilfe
    Von Lira im Forum Delphi, Kylix, Pascal
    Antworten: 6
    Letzter Beitrag: 26.04.04, 13:25
  4. Anfänger sucht Hilfe
    Von patmey im Forum PHP
    Antworten: 3
    Letzter Beitrag: 10.01.04, 19:02
  5. Anfänger sucht hilfe!
    Von DaBoss im Forum Sonstige 3D-Programme
    Antworten: 0
    Letzter Beitrag: 17.10.02, 11:36