Что нового

Надежное сокрытие окна

clown124

Новичок
Сообщения
6
Репутация
0
Доброго дня. Подскажите - существует ли в автоите функция - для надежного сворачивания окна (чтоб его вообще не было видно) ?
Чтобы при открытии файла - оно не мелькало.
Я пытаюсь свернуть окно маткада - Title: "Документ.xmcd"
командой:
Код:
ShellExecute(@ScriptDir & '\Документ.xmcd', @SW_HIDE)

а затем еще:
Код:
WinSetState($hWnd, "", @SW_HIDE)

Но это не помогает - при открытии - все равно программа открывается во весь экран и только потом сворачивается через @SW_HIDE

Как сделать так, чтобы это окно уже сразу при открытии - было свернутым, чтобы оно не открывалось во весь экран перед тем как свернуться ?
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Может быть так?
Путь до программы примерный.
Код:
Run('C:\Program Files\Mathcad\Mathcad 15\Mathcad.exe "' & @ScriptDir & '\Документ.xmcd"', '', @SW_HIDE)

Если не прокатит, то почитайте *Эту тему*.
 
Автор
C

clown124

Новичок
Сообщения
6
Репутация
0
xXx
Этой командой файл просто открывается в маткаде.
@SW_HIDE - не работает.


А вот здесь вот непонятно.
Предложено использовать другой рабочий стол для временного запуска процесса.
А как этот код - под мой процесс приспособить ?
Код:
#Include <WinAPIEx.au3>

$sFileExe = "program.exe"
Global $hNewDesktop = _WinAPI_CreateDesktop( "ShellExecuteHidden_Desktop", 0x10000000) ; создаем другой рабочий стол
Global $pid

_shellExecuteHidden($sFileExe, "") ; запускаем program.exe на другом рабочем столе

$hWin = _GetWindow("TFormMain") ; получаем хэндл главного окна
ControlClick($hWin, "", "TButton1")

$hWin = _GetWindow("#32770") ; получаем хэндл Бокса "Да/Нет"
ControlClick($hWin, "", "Button1")

$hWin = _GetWindow("#32770") ; получаем хэндл последнего Бокса "ОК"
ControlClick($hWin, "", "Button1")


Func _shellExecuteHidden( $filepath , $parameters = "")

    $tProcess = DllStructCreate( $tagPROCESS_INFORMATION )
    $tStartup = DllStructCreate( $tagSTARTUPINFO )
    DllStructSetData( $tStartup , 'Size', DllStructGetSize( $tStartup) )
    DllStructSetData( $tStartup , 'Desktop', _WinAPI_CreateString(  "ShellExecuteHidden_Desktop" ) )

    _WinAPI_CreateProcess( $filepath , $parameters , 0, 0, 0, 0x00000200 , 0, 0, DllStructGetPtr($tStartup), DllStructGetPtr($tProcess))
    $pid =  DllStructGetData( $tProcess , 'ProcessID' )

EndFunc


Func _GetWindow ($ClassName = "")

    While 1
        $aWindows = _WinAPI_EnumDesktopWindows($hNewDesktop)

        If IsArray( $aWindows ) Then
            For $i = 1 to $aWindows[0][0]
                $hWnd = $aWindows[$i][0]
                If WinGetProcess( $hWnd ) = $pid And $aWindows[$i][1] = $ClassName Then
                    If ($hWnd) Then
                        While NOT _WinAPI_IsWindowVisible($hWnd)
                            Sleep(50)
                        WEnd
                        Return $hWnd
                    EndIf
                Else
                    ContinueLoop
                EndIf
            Next
        EndIf
    WEnd

EndFunc
 
Верх