![]() |
![]() |
Elitte 03.08.2004 - 13:24 |
У меня прога СДРОМ, запускаю, вылазит окно, нажимаешь на кнопку, и сидиром начинает высовываться, засовываться, пока не перезагрузишь комп а я хочу подшутить тут, надо чтобы в автозагрузке эта прога торчала, но при загрузке компа, она загружает прогу, и надо нажать на кнопку, потом только он начинает а можно ли сделать, чтобы он сам нажался на кнопку, и свернулся, и невидно чтобы его вообще стало? |
cathode 1 - 03.08.2004 - 13:49 |
1. Смотри в Win32Api документацию по процедуре FindWindow. 2. Найди окно и пошли ему нужные сообщения. |
VARCH 2 - 03.08.2004 - 17:50 |
Вот программка сворачивает ВСЕ окна , чтобы свернуть одно подправь код... program Minimi; uses Windows,Messages, Dialogs, Sysutils; var Count:integer; function EnumProc (WinHandle: HWnd; Param: LongInt): Boolean; stdcall; begin if (GetParent (WinHandle) = 0) and (not IsIconic (WinHandle)) and (IsWindowVisible (WinHandle)) then begin PostMessage (WinHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0); Inc(Count); end; EnumProc := TRUE; end; begin Count:=0; EnumWindows (@EnumProc, 0); ShowMessage('Minimized:' + IntToStr(Count) + ' windows'); end. |
buger 3 - 03.08.2004 - 18:32 | для начала тебе нужно найти хендл кнопки, как уже сказали используй FindWindow(), затем послать ей сообщение SendMessage()якобы кнопка была нажата, потом найти хендл программы и тоже послать сообщение только сворачивание, если не ошибаюсь SC_MINIMIZE |
VARCH 4 - 03.08.2004 - 19:31 |
Что-то Я сегодня слишком добрый :-) Вот код : Нажимает кнопку заданную Вами в выбранном Вами окошке ... Это кусок из моей проги так, что кое что нужно убрать , а вобще этот код работает 100% так что "копай" ... procedure TForm1.Timer1Timer(Sender: TObject); Var HWN, Child : HWND; C, Buf : array[0..150] of char; S, WinT, ButT : String; begin WinT := Edit1.Text; ButT := Edit2.Text; HWN := FindWindow(nil, PChar(WinT)); If HWN <> 0 then Begin Child := GetWindow(HWN, GW_CHILD); While Child <> 0 do begin If GetClassName(Child, C, SizeOf(C)) > 0 then Begin S := StrPAS(C); If UpperCase(S) = 'BUTTON' then begin GetWindowText(Child, Buf, SizeOf(Buf)); If Us = True then Begin If (Buf <> Butt1) and (Buf <> Butt2) then Begin EnableWindow(Child, True); SendMessage(Child, BM_CLICK, 0, 0) end; end else If Buf = ButT then Begin EnableWindow(Child, True); SendMessage(Child, BM_CLICK, 0, 0) end; end; End; Child := GetWindow(Child, GW_HWNDNEXT); End; end; end; |
Elitte 5 - 04.08.2004 - 04:03 |
Ребята, спасибо, попытаюсь чтонибудь сделать, но если честно, то в ваших исходниках нифига не понял, опыта мало, с WinApi, HWND, вообще еще ниразу не программировал, только простенькие подскажите где можно взять описания по АПИ функциям, совместно с дельфой, т.е как работать с апи в дельфях, а то я ваш код взял, но очень мало понятно, а тупо вставить ваш код,и чтобы работала, это не программирование ну лана, попробую чегонибудь сделать всем спасибо!!!!!!!!!! |
VARCH 6 - 04.08.2004 - 05:03 |
А вот и WinApi на Русском ! :-) http://www.varchsoft.hotbox.ru/literat/Delphi/sovet_delphi.htm |