Bonjour,
Pour récupérer des données d'une API tierce, je suis obligé d'éxecuter un script PowerShell. Jusque-là, pas trop de problème sauf que je souhaite le lancer en mode réduit et avoir le retour de la fin du script.
1. Executer mon script PowerShell via .RUN me permet de le lancer en arrière-plan (fenêtre minimisée et garde la fenêtre principale active) mais pas la fin du script (donc tempo obligatoire et 2s quand tu as beaucoup de lignes, c'est long) :
2. Executer mon script PowerShell via .Exec me permet de savoir que le script est terminé et donc de continuer sans attendre les 2s. Par contre, impossible de lancer la fenêtre PowerShell en arrière-plan :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Set WsShell = CreateObject("WScript.Shell") WsShell.Run (strCommand), 7, True 'Displays the window as a minimized window. The active window remains active. Application.Wait (Now + TimeValue("00:00:02"))
J'ai tenté de réduire la fenêtre après le lancement mais sans succès :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Set WsShell = CreateObject("WScript.Shell") Set oExec = WsShell.Exec(strCommand) Do While oExec.Status = 0 Sleep 100 Loop
D'avance merci pour vos idées !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Const WM_SYSCOMMAND As Long = &H112 Private Const SC_MINIMIZE As Long = &HF020 Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function PostMessageW Lib "user32.dll" (ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function ShowWindowAsync Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long SendMessage oExec.processID, WM_SYSCOMMAND, SC_MINIMIZE, 0 ShowWindowAsync oExec.processID, SC_MINIMIZE PostMessageW oExec.processID, WM_SYSCOMMAND, SC_MINIMIZE, 0&
Partager