flat assembler
Message board for the users of flat assembler.
Index
> Windows > GetProcessId Problem |
Author |
|
drobole 15 Nov 2010, 01:09
I'm not sure why GetProcessId doesn't work. After some searching it seems that others have problems with this function too.
Anyway, the PROCESS_INFORMATION struct has a field for the process id already, called dwProcessId, so you can get it from there Code: format PE GUI 4.0 include 'WIN32AX.INC' entry main section '.data' data readable writeable startInfo STARTUPINFO <> sizeof.startInfo = $ - startInfo procInfo PROCESS_INFORMATION <> sizeof.procInfo = $ - procInfo prog db "calc.exe", 0 pidbuf db 32 dup 0 fmt_d db "%d",0 section '.text' code readable executable proc main invoke RtlZeroMemory, startInfo, sizeof.startInfo invoke RtlZeroMemory, procInfo, sizeof.procInfo mov [startInfo.cb], sizeof.startInfo invoke CreateProcess, 0, prog, 0, 0, 0, 0, 0, 0, startInfo, procInfo invoke WaitForSingleObject,[procInfo.hProcess], 0xffffffff ; INFINITE cinvoke wsprintf, pidbuf, fmt_d, [procInfo.dwProcessId] invoke CloseHandle, procInfo.hProcess invoke CloseHandle, procInfo.hThread invoke MessageBox, 0, pidbuf, prog, MB_OK invoke ExitProcess, 0 endp section '.idata' import data readable library user32, 'user32.dll', kernel32, 'kernel32.dll' include 'API\USER32.INC' include 'API\KERNEL32.INC' section '.reloc' fixups data readable discardable I see that you have out commented the RtlZeroMemory calls. Unless you know what you are doing I wouldn't recommend it. The MSDN documentation states that several of the fields should be zero before using the struct: http://msdn.microsoft.com/en-us/library/ms686331(VS.85).aspx The cb member should also hold the size of the struct. Only reason to out comment that code is if you like to live dangerously Last edited by drobole on 15 Nov 2010, 10:47; edited 1 time in total |
|||
15 Nov 2010, 01:09 |
|
sinsi 15 Nov 2010, 04:36
GetProcessId just returns a number, the same number in Task Manager's PID column.
|
|||
15 Nov 2010, 04:36 |
|
drobole 15 Nov 2010, 08:28
You are passing the arguments to itoa in the wrong order and you are missing [] around procId
|
|||
15 Nov 2010, 08:28 |
|
guignol 15 Nov 2010, 09:25
drobole wrote: You are passing the arguments to itoa in the wrong order and you are missing [] around procId Code: cinvoke itoa,[procId],itdb,10 |
|||
15 Nov 2010, 09:25 |
|
Overflowz 15 Nov 2010, 09:47
sinsi, I'm trying exactly that but it doesn't show same value as Task Manager.
drobole, I tried that but after that MessageBox function were not triggered. |
|||
15 Nov 2010, 09:47 |
|
Alphonso 15 Nov 2010, 09:51
Code: section '.data' data readable writeable startInfo STARTUPINFO <> sizeof.startInfo = $ - startInfo procInfo PROCESS_INFORMATION <> sizeof.procInfo = $ - procInfo prog db "calc.exe", 0 procId dd ? wsformat db '%u',0 Buff rb 20 section '.text' code readable executable proc main mov [startInfo.cb], sizeof.startInfo invoke CreateProcess, 0, prog, 0, 0, DETACHED_PROCESS, NORMAL_PRIORITY_CLASS, 0, 0, startInfo, procInfo cinvoke wsprintf,Buff,wsformat,[procInfo.dwProcessId] invoke MessageBox,0,Buff,prog,MB_OK invoke WaitForSingleObject,[procInfo.hProcess], 0xffffffff ; INFINITE invoke MessageBox, 0, prog, prog, MB_OK invoke ExitProcess, 0 endp |
|||
15 Nov 2010, 09:51 |
|
Overflowz 15 Nov 2010, 10:00
Alphonso, your code works fine. Thank you but I have 1 question, can it be done without using wsprintf ? Instead of wsprintf using itoa ?
|
|||
15 Nov 2010, 10:00 |
|
drobole 15 Nov 2010, 10:51
I just realized wsprintf uses c calling convention
@Overflowz Look at guignol's example of how to use the itoa function correctly |
|||
15 Nov 2010, 10:51 |
|
Alphonso 15 Nov 2010, 10:52
Sorry Overflowz I'm not that familiar with itoa so used wsprintf instead.
Code: ;try replacing cinvoke wsprintf,Buff,wsformat,[procInfo.dwProcessId] ;with cinvoke itoa,[procInfo.dwProcessId],Buff,10 |
|||
15 Nov 2010, 10:52 |
|
Overflowz 15 Nov 2010, 11:15
Ahh.. What a miss I was doing itoa call mistakelly.. Thanks now I got it whats problem. Works fine!
|
|||
15 Nov 2010, 11:15 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.