vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
DTA-Dateien erstellen inkl. BLZ-/Kontonummernpr?fung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

     Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

    Visual-Basic Einsteiger
    TaskID ermitteln 
    Autor: Björn
    Datum: 20.08.02 11:33


    Hallo Leute,

    mit dem folgendem Befehl öffne ich eine Datei die dann mit der entsprechenden Windows-Verknüpfung gestartet wird.
    z.B. Datei.doc wird automatisch mit Word geöffnet

    viewpath=Catei.doc
    ShellExecute hWnd, "Open", viewpath, "", "", vbNormalFocus

    Jetzt meine Frage wie kann z.B.: von dem geöffneten Word Programm die
    TaskID (Prozessnr.) ermitteln?

    Gruß Björn
    Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

    Re: TaskID ermitteln 
    Autor: Braindead
    Datum: 20.08.02 11:48

    kopier folgendes in ein KlassenModule

    Option Explicit
    'Klasse zu Starten von eigenständigen Prozessen, merkt sich die PID
    Const INFINITE = &HFFFF
    Const STARTF_USESHOWWINDOW = &H1
    Public Enum enSW
        SW_HIDE = 0
        SW_NORMAL = 1
        SW_MAXIMIZE = 3
        SW_MINIMIZE = 6
    End Enum
    Private Type PROCESS_INFORMATION
        hProcess As Long
        hThread As Long
        dwProcessId As Long
        dwThreadId As Long
    End Type
    Private Type STARTUPINFO
        cb As Long
        lpReserved As String
        lpDesktop As String
        lpTitle As String
        dwX As Long
        dwY As Long
        dwXSize As Long
        dwYSize As Long
        dwXCountChars As Long
        dwYCountChars As Long
        dwFillAttribute As Long
        dwFlags As Long
        wShowWindow As Integer
        cbReserved2 As Integer
        lpReserved2 As Byte
        hStdInput As Long
        hStdOutput As Long
        hStdError As Long
    End Type
    Private Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Long
    End Type
    Public Enum enPriority_Class
        NORMAL_PRIORITY_CLASS = &H20
        IDLE_PRIORITY_CLASS = &H40
        HIGH_PRIORITY_CLASS = &H80
    End Enum
    Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" ( _
      ByVal lpApplicationName As String, ByVal lpCommandLine As String, _
      lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As _
      SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As _
      Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo _
      As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As _
    Long, ByVal dwMilliseconds As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (hObject As Long) As Boolean
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As _
      Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As _
    Long, ByVal uExitCode 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
    Const PROCESS_TERMINATE = &H1
    Private currPid As Long
    'Erstellt einen neuen Prozess
    Public Function newTask(ByVal App As String, ByVal WorkDir As String, ByVal _
      start_size As enSW, ByVal Priority_Class As enPriority_Class) As Boolean
        If IsActive Then
            newTask = False
            Exit Function
        End If
        Dim pclass As Long
        Dim sinfo As STARTUPINFO
        Dim pinfo As PROCESS_INFORMATION
        Dim sec1 As SECURITY_ATTRIBUTES
        Dim sec2 As SECURITY_ATTRIBUTES
        sec1.nLength = Len(sec1)
        sec2.nLength = Len(sec2)
        sinfo.cb = Len(sinfo)
        sinfo.dwFlags = STARTF_USESHOWWINDOW
        sinfo.wShowWindow = start_size
        pclass = Priority_Class
        newTask = CreateProcess(vbNullString, App, sec1, sec2, False, pclass, 0&, _
          WorkDir, sinfo, pinfo)
        currPid = pinfo.dwProcessId
    end Function
    'beendet den gestarteten Prozess
    Public Sub Kill()
        Dim Task As Long, Result As Long
         Task = OpenProcess(PROCESS_TERMINATE, 0&, currPid)
         Result = TerminateProcess(Task, 1&)
        Result = CloseHandle(Task)
     End Sub
    'prüft ob Prozess noch läuft
    Public Function IsActive() As Boolean
       Dim Handle&, ExitCode&
       Handle = OpenProcess(PROCESS_ALL_ACCESS, False, currPid)
      Call GetExitCodeProcess(Handle, ExitCode)
      IsActive = IIf(ExitCode = STILL_ACTIVE, True, False)
     End Function
    'gibt die PID zurück
    Public Property Get pid() As Long
        pid = currPid
    End Property
    Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

    Re: TaskID ermitteln 
    Autor: Björn
    Datum: 20.08.02 13:52

    Hallo Braindead,

    Ich versteh nicht wie mich das witer bringen soll !!??

    Gruß Björn
    Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

    Re: TaskID ermitteln 
    Autor: Björn
    Datum: 20.08.02 13:52

    Hallo Braindead,

    Ich versteh nicht wie mich das witer bringen soll !!??

    Gruß Björn
    Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

    Re: TaskID ermitteln 
    Autor: Braindead
    Datum: 20.08.02 14:32

    du erstellst ein object von der klasse über gibst die parameter an die function "newTask" bekommst true/false zurück ob der task erstellt werden konnte. fragst die eigenschaft "pid" ab und da hast du deine Pid(ProcessID)
    HMF
    Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

    Re: TaskID ermitteln 
    Autor: Björn
    Datum: 21.08.02 14:26


    tut mir leid wenn ich mich blöd dran stelle aber welche parameter soll ich den der funktion "newTask" übergeben?

    mein ausgangspunkt war ja folgender:

    z.B. Datei.doc wird automatisch mit Word geöffnet
    viewpath=Catei.doc
    ShellExecute hWnd, "Open", viewpath, "", "", vbNormalFocus
    Jetzt meine Frage wie kann z.B.: von dem geöffneten Word Programm die
    TaskID (Prozessnr.) ermitteln?

    ich habe ja nur den Wert "hWnd" zum übergeben aber das würde meine ansicht nach nicht zur funktion "newTask" passen!!??

    Grüß Björn
    Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

    Sie sind nicht angemeldet!
    Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

    Einloggen  |  Neu registrieren

    Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

    nach obenzurück
     
       

    Copyright ©2000-2015 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.
    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel