FCT plug-in: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
 
No edit summary
Line 40: Line 40:
<highlight-nsis>
<highlight-nsis>
     fct::fct /nounload '${WND_CLASS}' '${WND_TITLE}' /async /timeout=2000 /part '/question=$(termMsg)'
     fct::fct /nounload '${WND_CLASS}' '${WND_TITLE}' /async /timeout=2000 /part '/question=$(termMsg)'
;    Place your code here. We skipped hThread Pop and Push - it's in the stack.  
;    Place your code here. We skipped hThread Pop and Push - it sits in the stack.  
     fct::wait
     fct::wait
     Pop $0
     Pop $0

Revision as of 18:23, 19 November 2005

Author: Takhir (talk, contrib)


Links

Download:
Fct.zip (8 KB)

Description

Plug-in terminates application in 2 steps - first send WM_CLOSE to it's main window, then (if still alive) terminates application.
Has sync/async (background) modes, async is good for slowly exiting applications and multithreading.


Syntax

"fct" DLL function

fct::fct [/NOUNLOAD] WINDOW_CLASS WINDOW_TITLE [/ASYNC] [/PART] [/TIMEOUT=xxx] [/END]
Searchs for all windows with predefined 'class' and 'title' (or it's part). In the async mode returns running thread handle, in the sync one - terminated applications count (i.e. how many application not exited after WM_CLOSE and were terminated using TerminateProcess() ). Use 'wait' with this handle as parameter to get final result for this thread.
ASYNC
Not waits for process exit. Use 'wait' call if you want to get result
TIMEOUT
timeout for SendMessage() and WaitForSingleObject(). Default is 1000 (ms).
PART
WINDOW_TITLE is only a part of window title (caption)

"wait" DLL function

ExecDos::wait handle
Waits for process exit.
handle
Control thread handle returned by 'fct' call in the /ASYNC mode.

Example

Sync execution:

    fct::fct '${WND_CLASS}' '${WND_TITLE}' /timeout=2000 /part '/question=$(termMsg)'
    Pop $0
    MessageBox MB_OK "Terminated count=$0"

Async execution:

    fct::fct /nounload '${WND_CLASS}' '${WND_TITLE}' /async /timeout=2000 /part '/question=$(termMsg)'
;    Place your code here. We skipped hThread Pop and Push - it sits in the stack. 
    fct::wait
    Pop $0
    MessageBox MB_OK "Terminated count=$0"