ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Грамотное сокрытие окна
  #1  
Старый 30.01.2010, 16:05
Snake Plissken
Новичок
Регистрация: 07.07.2008
Сообщений: 22
Провел на форуме:
64581

Репутация: 0
Question Грамотное сокрытие окна

В догонку к моим топовым вопросам.
Какой наиболее оптимальный способ скрыть окно программы, запущенной через CreateProcess().

Эти параметры:

Код:
  STARTUPINFO si;  
si.dwFlags = STARTF_USESHOWWINDOW;  si.wShowWindow = SW_HIDE;
как я понял софтинка игнорирует. Как поступить в таком случае? Насколько я понял можно еще попытаться найти хэндл окошка и попробовать его насильно спрятать, но тогда программа некоторое время все еще будет светить свое окно, а это форменный непохек. Подскажите, кто занимался и решение нашел
 
Ответить с цитированием

  #2  
Старый 30.01.2010, 17:16
RDL_Rider
Познающий
Регистрация: 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..
 
Ответить с цитированием

  #3  
Старый 30.01.2010, 18:13
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Темболее можно через DWORD dwX; DWORD dwY; задать положения окна за пределами экрана, чтобы его по любому не видно было
 
Ответить с цитированием

  #4  
Старый 30.01.2010, 21:15
RDL_Rider
Познающий
Регистрация: 21.06.2009
Сообщений: 81
Провел на форуме:
77148

Репутация: 5
По умолчанию

Цитата:
Сообщение от slesh  
Темболее можно через DWORD dwX; DWORD dwY; задать положения окна за пределами экрана, чтобы его по любому не видно было
В таскбаре будет видно
 
Ответить с цитированием

  #5  
Старый 30.01.2010, 21:23
Snake Plissken
Новичок
Регистрация: 07.07.2008
Сообщений: 22
Провел на форуме:
64581

Репутация: 0
По умолчанию

С WinExec точно такой же эффект.
А с СreateProcess() указываю si.dwFlags = STARTF_USEPOSITION и кручу значения si.dwX и si.dwY но на поведение программы это никак не влияет. Может какие-то моменты не учтены?

Последний раз редактировалось Snake Plissken; 30.01.2010 в 22:04..
 
Ответить с цитированием

  #6  
Старый 31.01.2010, 01:36
RDL_Rider
Познающий
Регистрация: 21.06.2009
Сообщений: 81
Провел на форуме:
77148

Репутация: 5
По умолчанию

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

  #7  
Старый 31.01.2010, 03:04
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
Провел на форуме:
246020

Репутация: 105
По умолчанию

а не проще ли сделать так:
Код:
ShowWindow(hWnd,SW_HIDE);
 
Ответить с цитированием

  #8  
Старый 31.01.2010, 10:14
Snake Plissken
Новичок
Регистрация: 07.07.2008
Сообщений: 22
Провел на форуме:
64581

Репутация: 0
По умолчанию

RDL_Rider
Multi Password Recovery

t04
Для этого нужно найти хэндл окна, тоесть пока он будет искаться софтина будет видна.
 
Ответить с цитированием

  #9  
Старый 31.01.2010, 11:10
xafon
Познающий
Регистрация: 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..
 
Ответить с цитированием

  #10  
Старый 31.01.2010, 14:05
RDL_Rider
Познающий
Регистрация: 21.06.2009
Сообщений: 81
Провел на форуме:
77148

Репутация: 5
По умолчанию

Эмм..а почему бы банально не пропатчить MPR ?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Входная дверь ZavodiJIo Болталка 9 19.12.2009 19:06
Открытие нового окна через приложение vkontakte zavra Уязвимости 3 09.09.2009 17:47
клва и кнопочка свернуть все окна MrTrick Болталка 9 18.01.2009 18:53
Окно с кнопкой на Api je0n Авторские статьи 1 09.11.2006 02:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ