ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

30.01.2010, 16:05
|
|
Новичок
Регистрация: 07.07.2008
Сообщений: 22
Провел на форуме: 64581
Репутация:
0
|
|
Грамотное сокрытие окна
В догонку к моим топовым вопросам.
Какой наиболее оптимальный способ скрыть окно программы, запущенной через CreateProcess().
Эти параметры:
Код:
STARTUPINFO si;
si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE;
как я понял софтинка игнорирует. Как поступить в таком случае? Насколько я понял можно еще попытаться найти хэндл окошка и попробовать его насильно спрятать, но тогда программа некоторое время все еще будет светить свое окно, а это форменный непохек. Подскажите, кто занимался и решение нашел 
|
|
|

30.01.2010, 17:16
|
|
Познающий
Регистрация: 21.06.2009
Сообщений: 81
Провел на форуме: 77148
Репутация:
5
|
|
может лучше через WinExec("App Name", SW_HIDE) ?
ну а если настаиваешь на
Код:
BOOL WINAPI CreateProcess(
__in_opt LPCTSTR lpApplicationName,
__inout_opt LPTSTR lpCommandLine,
__in_opt LPSECURITY_ATTRIBUTESlpProcessAttributes,
__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in BOOL bInheritHandles,
__in DWORD dwCreationFlags,
__in_opt LPVOID lpEnvironment,
__in_opt LPCTSTR lpCurrentDirectory,
__in LPSTARTUPINFO lpStartupInfo,
__out LPPROCESS_INFORMATION lpProcessInformation );
то присмотрись к структуре
Код:
typedef struct _STARTUPINFO {
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError; }
STARTUPINFO, *LPSTARTUPINFO;
а именно к параметру wShowWindow
wShowWindow If dwFlags specifies STARTF_USESHOWWINDOW, this member can be any of the values that can be specified in the nCmdShow parameter for the ShowWindow function, except for SW_SHOWDEFAULT. Otherwise, this member is ignored. For GUI processes, the first time ShowWindow is called, its nCmdShow parameter is ignored wShowWindow specifies the default value. In subsequent calls to ShowWindow, the wShowWindow member is used if the nCmdShow parameter of ShowWindow is set to SW_SHOWDEFAULT.
то есть если в запускаемой проге функция ShowWindow вызывается более одного раза с ShowCmd != SW_SHOWDEFAULT, то нифига не сработает. Проверь прогу, которую запускаешь.
Последний раз редактировалось RDL_Rider; 30.01.2010 в 17:22..
|
|
|

30.01.2010, 18:13
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Темболее можно через DWORD dwX; DWORD dwY; задать положения окна за пределами экрана, чтобы его по любому не видно было
|
|
|

30.01.2010, 21:15
|
|
Познающий
Регистрация: 21.06.2009
Сообщений: 81
Провел на форуме: 77148
Репутация:
5
|
|
Сообщение от slesh
Темболее можно через DWORD dwX; DWORD dwY; задать положения окна за пределами экрана, чтобы его по любому не видно было
В таскбаре будет видно 
|
|
|

30.01.2010, 21:23
|
|
Новичок
Регистрация: 07.07.2008
Сообщений: 22
Провел на форуме: 64581
Репутация:
0
|
|
С WinExec точно такой же эффект.
А с СreateProcess() указываю si.dwFlags = STARTF_USEPOSITION и кручу значения si.dwX и si.dwY но на поведение программы это никак не влияет. Может какие-то моменты не учтены?
Последний раз редактировалось Snake Plissken; 30.01.2010 в 22:04..
|
|
|

31.01.2010, 01:36
|
|
Познающий
Регистрация: 21.06.2009
Сообщений: 81
Провел на форуме: 77148
Репутация:
5
|
|
Сообщение от Snake Plissken
С WinExec точно такой же эффект.
А с СreateProcess() указываю si.dwFlags = STARTF_USEPOSITION и кручу значения si.dwX и si.dwY но на поведение программы это никак не влияет. Может какие-то моменты не учтены?
а что за прогу, если не секрет, ты пытаешься запустить ?
Может, у проги дочерние окна?
|
|
|

31.01.2010, 03:04
|
|
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
Провел на форуме: 246020
Репутация:
105
|
|
а не проще ли сделать так:
Код:
ShowWindow(hWnd,SW_HIDE);
|
|
|

31.01.2010, 10:14
|
|
Новичок
Регистрация: 07.07.2008
Сообщений: 22
Провел на форуме: 64581
Репутация:
0
|
|
RDL_Rider
Multi Password Recovery
t04
Для этого нужно найти хэндл окна, тоесть пока он будет искаться софтина будет видна.
|
|
|

31.01.2010, 11:10
|
|
Познающий
Регистрация: 02.12.2009
Сообщений: 37
Провел на форуме: 195146
Репутация:
15
|
|
если знаешь классс окна то можешь воспользоватся этим:
Код:
ShowWindow(FindWindow('OpWindow',nil), SW_HIDE);
один из вариантов:
Код:
function OpWnd(Handle:HWND;ShowCmd:integer):bool;stdcall;
var s:ANSIstring;
begin
SetLength(s,100);
GetClassNameA(Handle,PANSIChar(s),100);
SetLength(s, lStrLen(PANSIChar(s)));
if s='OpWindow' then ShowWindow(Handle,ShowCmd);
result:=true;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
EnumWindows(@OpWnd,SW_HIDE);//второй параметр это для функции ShowWindow то есть что мы сделаем с окнами оперы.(покажем SW_Show, скроем SW_HIDE)
end;
это пример со скрытием окна оперы, OpWindow это класс окна оперы.
p.s почитай еще вот тут (есть пример на делфи).
Последний раз редактировалось xafon; 31.01.2010 в 11:13..
|
|
|

31.01.2010, 14:05
|
|
Познающий
Регистрация: 21.06.2009
Сообщений: 81
Провел на форуме: 77148
Репутация:
5
|
|
Эмм..а почему бы банально не пропатчить MPR ?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|