| |
|
|
| No mehr erforderlich, siehe iFs Posting, hay befindet se el Source en XPSE kompatibler Versión sin Autores-Referencia oder ähnlichem. Weiterentwicklung eingestellt.
[hr:aa5e7cfcab] Apéndice de me - IF. Thomas war así freundlich - después de corto Aussprache zwischen me y Ihm - seinen Code me nochmals disponible a stellen. Und como el Code ursprünglich hier stand Puse ihn auch hier otra vez hinein: KompilierenMarcaSeparaciónErsatz für Run
Wird es als Funktion aufgerufen, erhält man das hWnd des Fensters zurück
Fehlerrückgaben:
-1 = Programm wurde nicht gefunden oder falsche Parameterzahl
0 = Timeout erreicht, das ermitteln des Fenster hat mehr als 5 Sek. gedauert
und wurde abgebrochen
Autor: Thomas Schulz aka ts-soft
erstellt: 23.10.2006
Version: 1.0 für XProfan 10
$H windows.ph
$H structs.ph
Proc ?_RunEx
Case %PCount <> 1 : Return -1
Parameters cmdline$
Declare Ret&, SI#, PI#, WinHandle&, pid&, win&, timeout&
Struct STARTUPINFO = ~STARTUPINFO
Struct PROCESS_INFORMATION = ~PROCESS_INFORMATION
Dim SI#, STARTUPINFO
Dim PI#, PROCESS_INFORMATION
timeout& = ~GetTickCount() + 5000
WinHandle& = -1
Ret& = ~CreateProcessA(0, Addr(cmdline$), 0, 0, 0, 0, 0, 0, SI#, PI#)
If Ret&
Repeat
win& = FindWindow("")
While win&
~GetWindowThreadProcessId(win&, Addr(pid&))
If pid& = PI#.dwProcessId&
WinHandle& = win&
Break
EndIf
If ~GetTickCount() > timeout&
WinHandle& = 0
Break
EndIf
win& = ~GetWindow(win&, ~GW_HWNDNEXT)
EndWhile
Until WinHandle& > -1
EndIf
Dispose SI#
Dispose PI#
Return WinHandle&
../../references-fonction/XProfan/ENDPROC/'>ENDPROC
|
|
|
| |
|
|
|
| KompilierenMarcaSeparación
Proc RunEx(cmdline$)
Declare SI#, PI#, pid&, win&
Dim SI#, STARTUPINFO
Dim PI#, PROCESS_INFORMATION
var timeout&:=GetTickCount()+5000
var WinHandle&:=-1
If CreateProcessA(0,Addr(cmdline$),0,0,0,0,0,0,SI#,PI#)
Repeat
win&:=FindWindow("")
While ((win&) and (winHandle&==-1))
GetWindowThreadProcessId(win&,Addr(pid&))
case pid& == PI#.dwProcessId& : WinHandle& = win&
case GetTickCount() > timeout& : WinHandle& = 0
win&:=GetWindow(win&, GW_HWNDNEXT)
EndWhile
Until WinHandle&>-1
EndIf
Dispose SI#
Dispose PI#
Return WinHandle&
EndProc
var notepad& = RunEx("c:\windows\notepad.exe")
If notepad&
SendString(notepad&, "XProfan 10 ist einfach Spitze!")
SendString(notepad&, "Aber das Wissen ja alle")
SendString(notepad&, "Gruß, Thomas")
EndIf
|
|
|
| |
|
|
|
| @IF Der Sinn, por qué Usted el Source wiederholst, wobei entonces qué fehlt, entgeht me hier. Der Code-Snippet debería auch sin XPSE laufen El Änderung en el Ejemplo en Hardcoded Dateipfad es doch probablemente no Su Ernst? Lo debería möglichst cada laufen, o. si, entonces ermittelt uno el Pfad! |
|
|
| |
|
|
|
| Was ha Usted porque gestochen?
Was fehlt Usted porque y por qué debería una CodeSnippet qué con benötigt XPSE bezeichnet es auch sin XPSE laufen especialmente Usted sí ya el no-XPSE Schnipsel Nuevo hast?
El Änderung en el Ejemplo en Hardcoded es sehrwohl mein Ernst - me es unklar por qué en Beispielcodes nichts hardcoded ser darf! Ist el una Unit? Un DLL?
Und el Anrecht en él algo - por qué De todos modos - a wiederholen, Yo me así geschaffen el dies hier mi Comunidad es - qué natürlich no heissen se el Yo no wünsche mich darauf aufmerksam a hacer si yo algo falso wiederhole. |
|
|
| |
|
|
|
| [quote:8cef19ce1c=TS-Soft]No mehr erforderlich, siehe iFs Posting, hay befindet se el Source en XPSE kompatibler Versión sin Autores-Referencia oder ähnlichem. Weiterentwicklung eingestellt.[/quote:8cef19ce1c] Ach Gott como brennt el Schuh! Der Autorenhinweis war doch klar y deutlich en DEINEM Posting a lesen! Nur porque Usted Su Posting ahora lejos hast es doch alles para el Katz! Mein Posting kahm después de Deinem Posting y war como Ergänzung a sehen - no como Ersatz!
Yo finde Usted hast überreagiert Thomas.
[hr:8cef19ce1c] Leider ha Thomas ser Posting lejos - con el Originalcode (en el no-Xpse-Formato), also hier otra vez una vom XPSE umgewandelte Versión en el no-Xpse-Formato el natürlich niiiieeeemals así schön es como Thomas seine Variante el auch una Vermerk en el Author (Thomas Schulz) enthielt. KompilierenMarcaSeparaciónDECLARE __cf1&,__cf2&,__cf3&,__cf4&
STRUCT STARTUPINFO=CB&,LPRESERVED#(4),LPDESKTOP#(4),LPTITLE#(4),DWX&,DWY&,DWXSIZE&,DWYSIZE&,DWXCOUNTCHARS&,DWYCOUNTCHARS&,DWFILLATTRIBUTE&,DWFLAGS&,WSHOWWINDOW%,CBRESERVED2%,LPRESERVED2&,HSTDINPUT&,HSTDOUTPUT&,HSTDERROR&
STRUCT PROCESS_INFORMATION=HPROCESS&,HTHREAD&,DWPROCESSID&,DWTHREADID&
Def __cf1(2) !"KERNEL32","GetProcAddress"
Def __cf2(1) !"KERNEL32","GetModuleHandleA"
__cf1&=__cf1(__cf2("kernel32.dll"),"GetTickCount")
__cf2&=__cf1(__cf2("kernel32.dll"),"CreateProcessA")
__cf3&=__cf1(__cf2("user32.dll"),"GetWindowThreadProcessId")
__cf4&=__cf1(__cf2("user32.dll"),"GetWindow")
$DEFINE XPSE
proc RUNEX
PARAMETERS CMDLINE$
DECLARE SI#, PI#, PID&, WIN&
DIM SI#, STARTUPINFO
DIM PI#, PROCESS_INFORMATION
VAR TIMEOUT&=call(__cf1&)+5000
VAR WINHANDLE&=-1
IF call(__cf2&,0,ADDR(CMDLINE$),0,0,0,0,0,0,SI#,PI#)
REPEAT
WIN&=FINDWINDOW("")
WHILE ((WIN&) AND (WINHANDLE&=-1))
call(__cf3&,WIN&,ADDR(PID&))
IF PID&=PI#.DWPROCESSID&
WINHANDLE&=WIN&
ENDIF
IF call(__cf1&) > TIMEOUT&
WINHANDLE&=0
ENDIF
WIN&=call(__cf4&,WIN&, 2)
ENDWHILE
UNTIL WINHANDLE&>-1
ENDIF
DISPOSE SI#
DISPOSE PI#
RETURN WINHANDLE&
endproc
VAR NOTEPAD&=RUNEX("c:\windows\notepad.exe")
IF NOTEPAD&
SENDSTRING(NOTEPAD&, "XProfan 10 ist einfach Spitze!")
SENDSTRING(NOTEPAD&, "Aber das Wissen ja alle")
SENDSTRING(NOTEPAD&, "Gruß, Thomas")
ref='./../../references-fonction/XProfan/endif/'>ENDIF
|
|
|
| |
|
|
|
GDL | Bitte nich a mi Geburtstag streiten.
Servus Georg |
|
|
| |
|
|
|
| [quote:f0cb3b491f=GDL]Bitte nich a mi Geburtstag streiten.
Servus Georg[/quote:f0cb3b491f] Usted zauberst me siempre otra vez una Lächeln Georg. |
|
|
| |
|
|
|
GDL | Bin heute seit langem veces otra vez bien en él y yo wünsche me, el tal vez todos heute veces bien en él son.
Servus Georg |
|
|
| |
|
|
|
| Hey el bekommen wir sicher hin - @todos: stiiiiimts???? |
|
|
| |
|
|
|
| Yo glaub wir (Thomas y yo) konnten el Indifferenz en un ausführlichen Skypegespräch beilegen. Drum siehe erstes Posting. |
|
|
| |
|
|
|
Torsten Rümker | Yo bin ahora al probieren y probieren, y zwar Yo intenta el Procedure todavía mitzugeben en welchem Modus el Programa starten se. (also minimiert oder maximiert oder qué De todos modos)
Folgendes Yo also eingefügt o verändert: vorher: KompilierenMarcaSeparación Nachher: KompilierenMarcaSeparación Posesiones intenta CreateProcessA a befolgen, aber irgendwie kommt como en me nix en fuera, se heißen el Programa se siempre en el Normalmodus comenzó egal Yo mache.
A
MfG Torsten Rümker |
|
|
| Ich lerne, ob ich will oder nicht! Betriebssystem: - Ubuntu 15.x - Windows (diverse) XProfan Version: X2 | 02.11.2006 ▲ |
|
|
|
|
| Si usted ya el handle hast, por qué benutzte no simplemente ShowWindow(N1,N2) ? |
|
|
| |
|
|