![]() |
Скрыть установку программы (чужой)
Здрасьте всем!
Уважаемые знатоки, есть тема и есть вопрос! Тема: Нужно скрыть установку сторонней программы, тобеж работу инсталятора! Вопрос: Как это сделать? |
передвинуть окошко инсталлятора в невидимую часть экрана ( больше чем разрешение ), и там поклацать по кнопкам, ченить типа такого )
|
ага, а как быть с панелью задач на которой будет святиться приложение?
|
покопай вообще в сторону окно, я уверен что и из панели задач убрать его непроблема )
|
вот цытат с sources.ru
Цитата:
|
попробуй связку FindWindow(class, caption) и после того как получишь хэндл попробуй - ShowWindow(HWND, SW_HIDE) После этого будет светиться только процесс в диспетчере задач.
Причем сохраняется возможность управлять программой через SendMessage, посылая кнопкам инсталятора команды(Нажатие мыши или клавиш). За более подробной информацией на www.google.com В сети полно исходников по теме скрытия окон. |
to _empty Не подскажеш как на кнопки влиять через SendMessage().. Например, как закрыть приложение я знаю. SendMessage(hwnd, WM_CLOSE,0,0).. Какие параметры передавать чтобы нажать на кнопку в программе? заранее спс..
|
MSDN forever ^____~
сообщения http://msdn.microsoft.com/en-us/library/bb775941(VS.85).aspx и в целом про button, если понадобится http://msdn.microsoft.com/en-us/library/bb775943(VS.85).aspx |
На какой Os если виста то сперва отключи Uac
|
аналог делфи
WinExec(PCHAr('D:\инсталятор.EXE'),sw_Hi de);// запуск процесса в скрытом режиме SendMessage(дескриптор кнопки,BM_Click,0,0); // дескриптор кнопки ("Далее") ищется через дескриптор окна = FindWindow( 0, ННазвание окнаб... FindWindow(Дескриптор окна , класс кнопки, .... и будет тебе счастье |
Цитата:
|
Цитата:
|
FindWindow не ищёт дочернии окна. А так она аналогина FindWindowEx. Точнее наоборот ^___^
Так что приминение той или иной функции зависит от задач. Как впрочем и всегда ^___^ |
FindWindow все окна находит по их дескрипторам .
с сендмессейдж может быть проблема, если программа имеет диалоговое окно, там свои нюансы. самый надежный способ переключить окно в фокус и нажать виртуально кнопку. но для этого окно должно быть видимо |
виртуальная кнопка , ты имеешь ввиду типа SendKeys.Send("VK_RETURN"); - ентер ,
вот мучил вопрос как наажть на кнопку IE диалогового окна сохранения файла (Запустить Сохранить Отмена) б я знаю 3 способа наажтия через SendMessage 1) SendMessage(Handle, BM_Click,0,0); 2) SendMessage(Handle, BM_SETSTATE,1,0); SendMessage(Handle, WM_KILLFOCUS,0,0); 3) SendMessage(Handle, WM_LBUTTONDOWN,1,0); SendMessage(Handle, WM_LBUTTONUP,0,0); но ни один не сработал там |
Цитата:
PHP код:
|
а как запустить прогу чтоб ее не было видно, пробовал shellapi winexec createprocess с параметром sw_hide но чет не скрывает?
|
Цитата:
|
мне нужно чтобы он запускал ее уже скрытой, тк у нее идет сначала окно заставки!
Потом то я окно скрываю вот так без проблем: Код:
BeginИ еще у мну в этой проге(прога написана на с++) почему то не отмечается чек бокс, делаю так: Код:
Wd:=FindWindowEx(Wd, 0, 'CheckBox', nil);Но самое интересное что кликанье по кнопке, работает в этой проге, делаю вот так: Код:
Wd := FindWindowEx(Wd, 0, 'Button', nil); |
попробуй и отмечание чекбокса сделать через
SendMessage(Wd, BM_CLICK, 0, 0); или SendMessage(Handle, BM_SETSTATE,1,0); SendMessage(Handle, WM_KILLFOCUS,0,0); оно запускает твою прогу скрытой , но любое выскакивающее окошко из этой формы будет видно, в данном случае твоя заставка , тебе остается только запускать таймер и мониторить окно заставки а там уже потом через ShowWindow пряч его |
Если ты хочешь запускать программу в скрытом режиме делай так - WinExec("app_Path+name",SW_HIDE); После этого
PHP код:
P.S. Забыл сказать, насчет окон, есть такая хорошая бесплатная программа Restorator , которая может из файла вырезать ресурсы, так вот, я рекомендую вырезать всякие заставки и все такое, или отредактировать их так, что они будут не видны, тогда никаких проблем с внезапным выскакивающим окошком не будет. |
Кез передает
Юзайте пожалуйста CreateDesktop, SetThreadDesktop и CloseDesktop Ждал, пока в этом топике появится хотя бы 1 здравомыслящий человек, но походу это будет продолжаться бесконечно. Всем привет! 23:57:22: и после всем привет - Как дела, пацаны? |
А чез Restorator можно в диалоговом окне сделать так чтобы какой нить чекбокс был отмечен? и как это сделать я чет не понял!
|
К сожаленью не получиццо, можно только удалять и добавлять ресурсы, чекбокс не отмечен, хотя мб есть еще какие-нибудь програмы, погугли
|
PE Explorer подойдет
|
SlyBit, вроде эта прога такая же как и ресторатор в ней я тож не нашел способа отметить чек бокс! Может обьяснишь?
|
ZirroCool
Сорри, перепутал, отметить чекбокс через редактор ресурсов нельзя (по крайней мере для программ, скомпилированных борладским компилятором), можно только снять метку с него. Я так понял, ты через апи имитируешь нажатия кнопок пользователем, шли тогда сообщение чекбоксу SendMessage(hCheckbox, BM_SETCHECK, 1, 0). sn0w Менять рабочие столы можно только для своего процесса. |
в той проге эта хрень не работает SendMessage(hCheckbox, BM_SETCHECK, 1, 0), скорее всему потому что чек бокс в диалоге, так что я хз как сделать по этому и спрашиваю какие могут быть вообще варианты?
|
Можно попробовать нажать мышью на CheckBox -
Выставляешь допустим позицию окна заданую запускалось чтобы там, для удобства 0,0 например. отмеряешь, сколько примерно до чекбокса пикселей по x и y, а дальше уже имитируешь нажатие мыши в заданном месте, должен нажаться чекбокс. |
ZirroCool
Тебе нужно получить хэдл окна чекбокса, для этого перебираешь все дочерние окна главной формы функцией EnumChildWindows(hMain, EnumChildProc, 0);. hMain - хэдл окна главной формы, его получаешь функией FindWindow(0, "FormTitle"). EnumChildProc - функция перебора дочерних окон. Возвращает 1 для продолжения перебора окон, 0 для прекращения. Первый параметр - хэдл очередного дочернего окна. Код:
BOOL CALLBACK EnumChildProc(HWND hwnd , LPARAM lParam) |
Цитата:
есть такое поле lpDesktop в STARTUPINFO ... |
sn0w
Твоя правда, раньше не обращал внимания. Хотя опять же, смысл создавать рабочий стол, если можно просто полю wShowWindow присвоить значение SW_HIDE. |
Цитата:
|
| Время: 00:49 |