вопрос по асму

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by DooD, 20 Apr 2011.

  1. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    Привет всем.у меня такой вопрос: программа запускает другую программу через shellexecute , как дождаться выполнения программы?потому что shellexecute сразу же завершается.Надо на masm, буду благодарен также за пример кода.Возможно есть какая то другая функция?или waitforsingleobject ?
     
    #1 DooD, 20 Apr 2011
    Last edited: 20 Apr 2011
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Используй CreateProcess + WaitForSingleObject.
     
  3. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    ммм.сейчас попробую...
     
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    я чет не понял,ето надо в отдельном потоке делать?
     
  5. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Нэт, просто WaitForSingleObject передаешь хэндл созданного процесса...
     
    _________________________
  6. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    почему то процесс не создается,делаю так
    Code:
    invoke CreateProcess,ADDR fn,NULL,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,NULL,ADDR startInfo,ADDR processInfo 
     
  7. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Посмотри в MSDN - там был кошерный пример по CreateProcess.
     
  8. totenkopf

    totenkopf Elder - Старейшина

    Joined:
    19 Jul 2010
    Messages:
    92
    Likes Received:
    64
    Reputations:
    19
    На masm32

    Code:
    .486
    .model flat,stdcall
    option casemap:none
    
       include windows.inc
       include user32.inc
       include kernel32.inc
       include masm32.inc
       
       includelib user32.lib
       includelib kernel32.lib
       includelib masm32.lib
       
       include c:\masm32\macros\macros.asm
    
    .data?
       pi	PROCESS_INFORMATION <>
       sinf	STARTUPINFO			<>
    
    .code
    start:
    	invoke CreateProcess,NULL,chr$("notepad.exe"),NULL,NULL,FALSE,0,NULL,NULL,addr sinf,addr pi
    	mov esi,pi.hProcess
    	invoke WaitForSingleObject,esi,INFINITE
    	invoke MessageBox,0,chr$("Notepad dead"),chr$("Hello"),MB_OK
    
    invoke ExitProcess,0	
    end start
    
     
    2 people like this.
  9. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    благодарствую
     
  10. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    2 totenkopf, взял все испортил :) мы тут все стараемся чтобы DooD включил мозг, а ты эээх
     
    _________________________
  11. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    ыыч:) ну буду стараться сам все делать.