|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 15, 2003 16:10:51 ShowWindow (HWND hWnd, int nCmdShow) Можно с помощью этой функции скрыть текущее окно, и как тогда полуить хэндл этого окна? Она скрывает только виндовские окна или и консольные? |
|
|
Дата: Авг 15, 2003 16:28:56 Да. invoke ShowWindow, hWnd, SW_HIDE Невидимость окна никак не влияет на получение его хендла. У консольных приложений нет окон ;-) |
|
|
Дата: Авг 15, 2003 16:35:27 · Поправил: Edmond Four-F У консольных приложений нет окон ;-) ^) Ну это как посмотреть :) Само консольное окно есть конечно, только не у приложения. P.S Misty Вы не против, если я поменяю Вам Воин дзена на Воительницу Дзена.. Так красивее.. :) |
|
|
Дата: Авг 15, 2003 16:43:11 Four-F Мне как раз и нужно скрыть (вернее не показывать) консольное окно (если позволите его так назвать). Edmond Это было бы здорово :) |
|
|
Дата: Авг 15, 2003 16:54:04 Misty Да будет так!!! :) |
|
|
Дата: Авг 15, 2003 17:12:06 · Поправил: Misty Edmond Кул :) Спасиба ;) [Four-F Невидимость окна никак не влияет на получение его хендла.] Да это-то я прекрасно понимаю :) Я имела в виду как получить хэндл, что бы скрыть консоль. |
|
|
Дата: Авг 15, 2003 19:11:27 · Поправил: Four-F Под NT GetConsoleWindow. Под масдаем можно найти свою консоль по заголовку. Примерно так: .const szLib db "kernel32", 0 szFun db "GetConsoleWindow", 0 .data? acTitle CHAR 128 dup(?) .code invoke GetModuleHandle, addr szLib mov ecx, eax invoke GetProcAddress, ecx, addr szFun .if eax != NULL call eax .else invoke GetConsoleTitle, addr acTitle, sizeof acTitle invoke FindWindow, NULL, addr acTitle .endif invoke ShowWindow, eax, SW_HIDE Если две консоли будут с оюинаковыми заголовками, то это разумеется ненадежно. Тогда можно сначала поменять себе заголовок SetConsoleTitle, а потом искать такое окно. После заголовок восстановить. |
|
|
Дата: Авг 15, 2003 22:19:46 Misty Если вы запускаете консольное приложение (к BAT-файлам тоже относится) через CreateProcess, можно сделать так: .DATA pInfo PROCESS_INFORMATION <0,0,0,0> sPath db "C:\path\myprog",0 sDir db "C:\path",0 sis db 68 dup (0) .CODE ; . . . xor eax,eax mov DWORD PTR [sis],SIZEOF STARTUPINFO mov DWORD PTR [sis + 4],eax ; lpReserved = NULL mov DWORD PTR [sis + 8],eax ; lpDesktop = NULL mov DWORD PTR [sis + 12],eax ; lpTitle = NULL mov DWORD PTR [sis + 44],STARTF_USESHOWWINDOW mov DWORD PTR [sis + 48],eax ; wShowWindow = SW_HIDE mov DWORD PTR [sis + 52],eax ; lpReserved2 = NULL invoke CreateProcess,eax,OFFSET sPath,eax,eax,eax,\ NORMAL_PRIORITY_CLASS or CREATE_NEW_CONSOLE,eax,\ OFFSET sDir,OFFSET sis,OFFSET pInfo Консольное окно не будет показано. |
|
|
Дата: Авг 16, 2003 09:48:07 Как сделать чтобы консоль вообще не прорисовывалась? |
|
|
Дата: Авг 17, 2003 02:42:25 Misty Как сделать чтобы консоль вообще не прорисовывалась? В моём примере ничего не прорисовывается. |
|
|
Дата: Авг 17, 2003 03:46:17 Но нужен второй процесс. |
|
|
Дата: Авг 17, 2003 06:26:47 Four-F Но нужен второй процесс. Так ведь консоль, котрую нужно скрыть, очевидно, и так принадлежит чужому приложению, т.е. кому может понадобиться скрыть свою собственную консоль и зачем? |
|
|
Дата: Авг 17, 2003 10:49:01 Я тоже этого не понимаю, но вопрос, видимо, в том, как сама консоль может себя скрыть еще до появления. |
|
|
Дата: Авг 17, 2003 11:13:23 · Поправил: Misty Four-F В самую точку. Этот вопрос (Как сделать чтобы консоль вообще не прорисовывалась?) я задаю дополнительно. Вы с Quantum безгранично помогли мне своими примерами. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065 |