Deutsch
Stammtisch & Café

CreateProcess.

 


Beschreibung:

Die API CreateProcess startet eine Anwendung.




Deklaration:

Def @CreateProcess(10) !KERNEL32,CreateProcessA




Parameter:
1.Parameter: Bereichsvariable, in der der Name des zu startenden Programmes steht (kann 0 sein). 2.Parameter: Bereichsvariable, in der die Kommandozeile des zu startenden Programmes steht (Pfad, Dateiname und Parameter). Achtung! Lange Dateinamen machen hier eventuell Probleme!!! 3.Parameter: Bereichsvariable mit einem Security Descriptor für den zu startenden Prozess (kann 0 sein). 4.Parameter: Bereichsvariable mit einem Security Descriptor für den den ersten Thread des zu startenden Prozess (kann 0 sein). 5.Parameter: Flag für die übernahme von Handles. Kann 1 oder 0 sein. 6.Parameter: Flag für die Art der Erzeugung dss Prozesses (kann 0 sein). 7.Parameter: Zeiger auf einen neuen Block mit Umgebungsvariablen. Kann 0 sein. 8.Parameter: Bereichsvariable, in der das neue aktuelle Verzeichnis des zu startenden Prozesses steht (kann 0 sein).. 9.Parameter: Struktur oder 68 Byte große Bereichsvariable, in der weitere Informationen über den Startvorgang des Prozesses stehen können. => - Byte 0-3 = Größe des Bereichs / der Struktur - Byte 4-7 = Muß 0 sein (reserviert). - Byte 8-11 = 0 oder die Adresse eines Strings mit dem Namen des Desktops, auf dem der Prozess erzeugt werden soll. Unter Windows95 wird dieser Parameter ignoriert.. - Bytes 12-15 = 0 oder Adresse des Titels einer Konsolenanwendung. - Byte 16-19 = Wenn der Flag $4 unter Byte 44 vorhanden ist, die X-Position des erzeugten Fensters des Prozesses. Ansonsten 0. - Byte 20-23 = Wenn der Flag $4 unter Byte 44 vorhanden ist, die Y-Position des erzeugten Fensters des Prozesses. Ansonsten 0. - Byte 24-27 = Wenn der Flag $2 unter Byte 44 vorhanden ist, die Breite des erzeugten Fensters des Prozesses. Ansonsten 0. - Byte 28-31 = Wenn der Flag $2 unter Byte 44 vorhanden ist, die Höhe des erzeugten Fensters des Prozesses. Ansonsten 0. - Byte 32-35 = Wenn der Flag $8 unter Byte 44 vorhanden ist, steht hier für eine Konsolenanwendung die Breite des Screen-Buffers in ‚(Zeichen-)Spalten’. - Byte 36-39 = Wenn der Flag $8 unter Byte 44 vorhanden ist, steht hier für eine Konsolenanwendung die Breite des Screen-Buffers in ‚(Zeichen-)Zeilen’. - Byte 40-43 = Flags, die für Konsolenprozesse die Text- und Hintergrundfarben angeben, . wenn der Flag $10 unter Byte 44 vorhanden ist. Ansonsten 0. - Byte 44-47 = Flags, die u.a. angeben welche Mitglieder der Struktur/des Bereichs verwendet werden. Die Flags können mit | addiert werden. => $1 = Der an Byte 48 stehende Flag zur Anzeige des Fensters wird verwendet. $2 = Die an Byte 24 und 28 stehenden Angaben zu Höhe und Breite des Fensters werden verwendet. $4 = Die an Byte 16 und 20 stehenden Angaben zur Position des Fensters werden verwendet. $8 = Die an Byte 32 und 36 stehenden Angaben werden verwendet. $10 = Die an Byte 40 stehenden werden verwendet. $40 = Zeigt beim Aufbau des Prozesses den Cursor „Anwendung wird gestartet“ an. $80 = Normaler Cursor wird angezeigt (Gegenteil von $40). $100 = Benutzt die ab Byte 56 angegebenen Handles für den Prozess. Dazu muß Parameter 5 ebenfalls auf 1 gesetzt werden. $80000000 = Der Prozess wird wie ein Screensaver behandelt. - Byte 48-49 = Abbildungsmodus des Fensters des Prozesses (siehe 2.Parameter von WinExec in der Profan Hilfe). - Byte 50-51 = Reserviert, muß 0 sein. - Byte 52-55 = Reserviert, muß 0 sein. - Byte 56-59 = Wenn der Flag $100 unter Byte 44 vorhanden ist, kann man hier ein standard Inputhandle für den Prozess angeben. - Byte 60-63 = Wenn der Flag $100 unter Byte 44 vorhanden ist, kann man hier ein standard Outputhandle für den Prozess angeben. - Byte 64-67 = Wenn der Flag $100 unter Byte 44 vorhanden ist, kann man hier ein standard Errorhandle für den Prozess angeben. 10.Parameter: 16 Byte große Bereichsvariable oder Struktur, die Informationen über den gestarteten Prozess aufnimmt. => - Byte 0-3 = Das Handle des Prozesses. - Byte 4-7 = Das Handle des ersten Threads des Prozesses. - Byte 8-11 = Die ID des Prozesses. - Byte 12-15 = Die Thread-ID des Prozesses. [/blue]

Rückgabewert:

0 bei Mißerfolg, ansonsten 1

Beispiele:

KompilierenMarkierenSeparieren
Def @CreateProcess(10) !"KERNEL32","CreateProcessA"
Def @GetExitCodeProcess(2) !"KERNEL32","GetExitCodeProcess"
Def @TerminateProcess(2) !"KERNEL32","TerminateProcess"
Declare Command#,StartupInfo#,ProcessInfo#,ExitCode#

Proc CreateProcess

    Parameters command$
    Declare handle&
    Dim Command#,Add(Len(command$),1)
    Dim StartupInfo#,68
    Clear startupinfo#
    Long StartupInfo#,0=68
    Dim ProcessInfo#,16
    Clear ProcessInfo#
    String Command#,0=command$
    @CreateProcess(0,Command#,0,0,0,0,0,0,StartupInfo#,ProcessInfo#)
    Let handle&=Long(ProcessInfo#,0)
    Dispose Command#
    Dispose StartupInfo#
    Dispose ProcessInfo#
    Return handle&

EndProc

Proc KillProcess

    Parameters hprocess&
    Dim exitcode#,4
    @GetExitCodeProcess(hprocess&,exitcode#)
    @TerminateProcess(hprocess&,@Long(exitcode#,0))
    Dispose exitcode#

EndProc

Declare Terminate&,Start&,Programm$
Windowstyle 31
WindowTitle Process starten und killen
Window 0,0-640,440
Let Start&=@CreateButton(%HWND,Start,20,300,100,30)
Let Terminate&=@CreateButton(%HWND,"Terminate",200,300,100,30)
Enablewindow Terminate&,0
Enablewindow Start&,1

While 0=0

    Waitinput

    IF @Getfocus(Terminate&)

        KillProcess @&(0)
        Enablewindow Terminate&,0
        Enablewindow Start&,1

    ElseIF @Getfocus(Start&)

        Let Programm$=@Loadfile$("Eine Anwendung auswählen:","Programme|*.EXE;*.COM;*.PIF;*.BAT")

        IF Programm$<>

            CreateProcess Programm$,
            Enablewindow Terminate&,1
            Enablewindow Start&,0

        endif

    Endif

Wend



Prozess Anwendung Programm Task starten beenden überwachen

 
05.03.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.076 Betrachtungen

Unbenanntvor 0 min.
H.Brill19.04.2022
Jürgen Strahl09.05.2020
GDL12.05.2014
iF13.01.2013
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie