wolf9228 Posted August 29, 2009 Share Posted August 29, 2009 (edited) WINAPI_CreateProcess expandcollapse popup#include <StructureConstants.au3> $ProcessID = WINAPI_CreateProcess("Command.exe","/Q /F",@ScriptDir & "\") $ProcessID = WINAPI_CreateProcess("Command.exe",0,@ScriptDir & "\") $ProcessID = WINAPI_CreateProcess(@ScriptDir & "\Command.exe",0,0) $ProcessID = WINAPI_CreateProcess(@ScriptDir & "\Command.exe","/Q /F",0) Func WINAPI_CreateProcess( _ $lpApplicationName = 0, _ $lpCommandLine = 0, _ $lpCurrentDirectory = 0 , _ $lpProcessAttributes = 0, _ $lpThreadAttributes = 0, _ $bInheritHandles = True, _ $dwCreationFlags = 0, _ $lpEnvironment = 0 ) ;CreateProcess Function ;http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx Local $VarType1,$VarType2,$lpStartupInfo,$StartupInfo,$lpProcessInformation,$ProcessInformation if Not IsString($lpApplicationName) Or $lpApplicationName == "" Then $lpApplicationName = 0 $VarType1 = "int" Else $VarType1 = "str" EndIf if Not IsString($lpCommandLine) Or $lpCommandLine == "" Then $lpCommandLine = 0 $VarType2 = "int" Else $lpCommandLine = " " & $lpCommandLine & " " $VarType2 = "str" EndIf if Not IsString($lpCurrentDirectory) Or $lpCurrentDirectory == "" Then $lpCurrentDirectory = 0 $VarType3 = "int" Else $VarType3 = "str" EndIf $StartupInfo = DllStructCreate($tagSTARTUPINFO) DllStructSetData($StartupInfo,"Size",DllStructGetSize($StartupInfo)) $lpStartupInfo = DllStructGetPtr($StartupInfo) $ProcessInformation = DllStructCreate($tagPROCESS_INFORMATION) $lpProcessInformation = DllStructGetPtr($ProcessInformation) $BOOL = DllCall("Kernel32.dll","int","CreateProcess",$VarType1,$lpApplicationName,$VarType2,$lpCommandLine , _ "ptr",$lpProcessAttributes,"ptr",$lpThreadAttributes,"int",$bInheritHandles,"long",$dwCreationFlags , _ "ptr",$lpEnvironment ,$VarType3,$lpCurrentDirectory,"ptr",$lpStartupInfo,"ptr",$lpProcessInformation) if @error Then Return SetError(@error,0,0) if $BOOL[0] = 0 Then SetError(@error,0,$BOOL[0]) Return SetError(@error,0,DllStructGetData($ProcessInformation,"ProcessID")) EndFunc Command.exe If $CMDLINE[0] > 0 Then $TXT = "" For $i = 1 To $CMDLINE[0] Step 1 $TXT = $TXT & " " & $CMDLINE[$i] Next MsgBox(0,"lpCommandLine",$TXT) Else MsgBox(0,"lpCommandLine","No CommandLine") EndIf Edited August 29, 2009 by wolf9228 صرح السماء كان هنا Link to comment Share on other sites More sharing options...
Yashied Posted August 29, 2009 Share Posted August 29, 2009 (edited) $ProcessID = WINAPI_CreateProcess("Command.exe","/Q /F",@ScriptDir)Don`t work.EDIT:I use Windows XP.EDIT2:What's wrong with ShellExecute() or Run()? Edited August 29, 2009 by Yashied My UDFs: iKey | FTP Uploader | Battery Checker | Boot Manager | Font Viewer | UDF Keyword Manager | Run Dialog Replacement | USBProtect | 3D Axis | Calculator | Sleep | iSwitcher | TM | NetHelper | File Types Manager | Control Viewer | SynFolders | DLL Helper Animated Tray Icons UDF Library | Hotkeys UDF Library | Hotkeys Input Control UDF Library | Caret Shape UDF Library | Context Help UDF Library | Most Recently Used List UDF Library | Icons UDF Library | FTP UDF Library | Script Communications UDF Library | Color Chooser UDF Library | Color Picker Control UDF Library | IPHelper (Vista/7) UDF Library | WinAPI Extended UDF Library | WinAPIVhd UDF Library | Icon Chooser UDF Library | Copy UDF Library | Restart UDF Library | Event Log UDF Library | NotifyBox UDF Library | Pop-up Windows UDF Library | TVExplorer UDF Library | GuiHotKey UDF Library | GuiSysLink UDF Library | Package UDF Library | Skin UDF Library | AITray UDF Library | RDC UDF Library Appropriate path | Button text color | Gaussian random numbers | Header's styles (Vista/7) | ICON resource enumeration | Menu & INI | Tabbed string size | Tab's skin | Pop-up circular menu | Progress Bar without animation (Vista/7) | Registry export | Registry path jumping | Unique hardware ID | Windows alignment More... Link to comment Share on other sites More sharing options...
wolf9228 Posted August 29, 2009 Author Share Posted August 29, 2009 (edited) $ProcessID = WINAPI_CreateProcess("Command.exe","/Q /F",@ScriptDir) Don`t work. EDIT: I use Windows XP. EDIT2: What's wrong with ShellExecute() or Run()? Also In Autoit library The Function does not work correctly LPCTSTR mean A part In Autoit But there is something else in this Function Try this code expandcollapse popup#include <StructureConstants.au3> $ProcessID = WINAPI_CreateProcess("Command.exe","/Q /F",@ScriptDir & "\") $ProcessID = WINAPI_CreateProcess("Command.exe",0,@ScriptDir & "\") $ProcessID = WINAPI_CreateProcess(@ScriptDir & "\Command.exe",0,0) $ProcessID = WINAPI_CreateProcess(@ScriptDir & "\Command.exe","/Q /F",0) Func WINAPI_CreateProcess( _ $lpApplicationName = 0, _ $lpCommandLine = 0, _ $lpCurrentDirectory = 0 , _ $lpProcessAttributes = 0, _ $lpThreadAttributes = 0, _ $bInheritHandles = True, _ $dwCreationFlags = 0, _ $lpEnvironment = 0 ) ;CreateProcess Function ;http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx Local $VarType1,$VarType2,$lpStartupInfo,$StartupInfo,$lpProcessInformation,$ProcessInformation if Not IsString($lpApplicationName) Or $lpApplicationName == "" Then $lpApplicationName = 0 $VarType1 = "int" Else $VarType1 = "str" EndIf if Not IsString($lpCommandLine) Or $lpCommandLine == "" Then $lpCommandLine = 0 $VarType2 = "int" Else $lpCommandLine = " " & $lpCommandLine & " " $VarType2 = "str" EndIf if Not IsString($lpCurrentDirectory) Or $lpCurrentDirectory == "" Then $lpCurrentDirectory = 0 $VarType3 = "int" Else $VarType3 = "str" EndIf $StartupInfo = DllStructCreate($tagSTARTUPINFO) DllStructSetData($StartupInfo,"Size",DllStructGetSize($StartupInfo)) $lpStartupInfo = DllStructGetPtr($StartupInfo) $ProcessInformation = DllStructCreate($tagPROCESS_INFORMATION) $lpProcessInformation = DllStructGetPtr($ProcessInformation) $BOOL = DllCall("Kernel32.dll","int","CreateProcess",$VarType1,$lpApplicationName,$VarType2,$lpCommandLine , _ "ptr",$lpProcessAttributes,"ptr",$lpThreadAttributes,"int",$bInheritHandles,"long",$dwCreationFlags , _ "ptr",$lpEnvironment ,$VarType3,$lpCurrentDirectory,"ptr",$lpStartupInfo,"ptr",$lpProcessInformation) if @error Then Return SetError(@error,0,0) if $BOOL[0] = 0 Then SetError(@error,0,$BOOL[0]) Return SetError(@error,0,DllStructGetData($ProcessInformation,"ProcessID")) EndFunc Edited August 29, 2009 by wolf9228 صرح السماء كان هنا Link to comment Share on other sites More sharing options...
wolf9228 Posted August 29, 2009 Author Share Posted August 29, 2009 (edited) What's wrong with ShellExecute() or Run()? These two function Working With the WINAPI functions Meaning that they are A String Data In Autoit Edited August 29, 2009 by wolf9228 صرح السماء كان هنا Link to comment Share on other sites More sharing options...
Yashied Posted August 30, 2009 Share Posted August 30, 2009 What's wrong with ShellExecute() or Run()?These two function Working With the WINAPI functionsMeaning that they are A String Data In AutoitYou understand that you say? I suggest you a more detailed look into the matter. The Run() function is based on CreateProcess() API function. Anyway, without much need no sense to avoid use of native AutoIt functions. My UDFs: iKey | FTP Uploader | Battery Checker | Boot Manager | Font Viewer | UDF Keyword Manager | Run Dialog Replacement | USBProtect | 3D Axis | Calculator | Sleep | iSwitcher | TM | NetHelper | File Types Manager | Control Viewer | SynFolders | DLL Helper Animated Tray Icons UDF Library | Hotkeys UDF Library | Hotkeys Input Control UDF Library | Caret Shape UDF Library | Context Help UDF Library | Most Recently Used List UDF Library | Icons UDF Library | FTP UDF Library | Script Communications UDF Library | Color Chooser UDF Library | Color Picker Control UDF Library | IPHelper (Vista/7) UDF Library | WinAPI Extended UDF Library | WinAPIVhd UDF Library | Icon Chooser UDF Library | Copy UDF Library | Restart UDF Library | Event Log UDF Library | NotifyBox UDF Library | Pop-up Windows UDF Library | TVExplorer UDF Library | GuiHotKey UDF Library | GuiSysLink UDF Library | Package UDF Library | Skin UDF Library | AITray UDF Library | RDC UDF Library Appropriate path | Button text color | Gaussian random numbers | Header's styles (Vista/7) | ICON resource enumeration | Menu & INI | Tabbed string size | Tab's skin | Pop-up circular menu | Progress Bar without animation (Vista/7) | Registry export | Registry path jumping | Unique hardware ID | Windows alignment More... Link to comment Share on other sites More sharing options...
VertigoRay Posted June 19, 2018 Share Posted June 19, 2018 (edited) Can you specify the DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS process creation flag with Run()? I'm looking at implementing a direct CreateProcess() call via AutoIt so I can run a process with one of the two aforementioned flags. For some reason reason people get sad for grave-digging here, but there's relevant context in this post. I just googled my question and was brought here. EDIT I should note that the original function worked perfectly except that it runs in SW_HIDE. I'm trying to figure out how to run it in SW_NORMAL. From what I can tell, $tagSTARTUPINFO is set to ShowWindow. Also, I confirmed the const looks pretty much the same as it does in the doc: Quote dword Size;ptr Reserved1;ptr Desktop;ptr Title;dword X;dword Y;dword XSize;dword YSize;dword XCountChars;dword YCountChars;dword FillAttribute;dword Flags;word ShowWindow;word Reserved2;ptr Reserved3;handle StdInput;handle StdOutput;handle StdError Edited June 19, 2018 by VertigoRay Additional info without replies. Figure IT out!http://vertigion.com Link to comment Share on other sites More sharing options...
BrewManNH Posted June 20, 2018 Share Posted June 20, 2018 This function has been added to the standard WinAPI UDFs in WinAPIProc.au3. This thread is out of date. That's why we frown upon digging up 9 year old posts, the language changes over time and these types of threads become moot. You can send the standard _WinAPI_CreateProcess a $tagSTARTUPINFO structure set the way you want it to. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now