К списку форумов К списку вопросов
Как на дельфях свернуть другую запущенную программу
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

К списку вопросов на форуме Программирование

>>