Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.09.2011, 20:53
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию WinAPI минимизация окна

Уважаемые, почему не срабатывает следующий код?

Код:
var
  h: cardinal;
begin
  h := FindWindow(Edit1.Text, nil);
  ShowWindow(h,
    SW_MINIMIZE);
end;
Ответить с цитированием
  #2  
Старый 21.09.2011, 20:56
MultiVan MultiVan вне форума
Прохожий
 
Регистрация: 13.08.2011
Сообщения: 25
Репутация: 10
По умолчанию

Вместо cardinal пиши HWND
Код:
var
  h: HWND;
begin
  h := FindWindow(Edit1.Text, nil);
  ShowWindow(h,
    SW_MINIMIZE);
end;
Ответить с цитированием
  #3  
Старый 21.09.2011, 21:02
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Ситуация та же. Компилируется, но результата нет.
Ответить с цитированием
  #4  
Старый 21.09.2011, 21:05
MultiVan MultiVan вне форума
Прохожий
 
Регистрация: 13.08.2011
Сообщения: 25
Репутация: 10
По умолчанию

Код:
var
  h: HWND;
begin
  h := FindWindow(nil, 'Form1');
  ShowWindow(h,
    SW_MINIMIZE);
end;

вот попробуй , Form1 это заголовок окна , ставишь там нужная окна , ищи в инете уроки про работы с окнами или если найду время сделаю для тебя урок ;-)
Ответить с цитированием
  #5  
Старый 21.09.2011, 21:15
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Работает, благодарю.
Ответить с цитированием
  #6  
Старый 21.09.2011, 21:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не работает потому, что в Win используется PChar, в TEdit находится String. Перепиши так:
Код:
var
  h: HWND;
begin
  h := FindWindow(PChar(Edit1.Text), nil);
  ShowWindow(h, SW_MINIMIZE);
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 21.09.2011, 23:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Все-равно не найдет
findChildWindow.
Ответить с цитированием
  #8  
Старый 21.09.2011, 23:48
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

А при чём тут дочернее окно? Судя по его коду , ТС ищет другую прогу, ну к примеру "Калькулятор".
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 22.09.2011, 01:29
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от angvelem
А при чём тут дочернее окно? Судя по его коду , ТС ищет другую прогу, ну к примеру "Калькулятор".


А, ну да, сорри, просмотрел
Ответить с цитированием
  #10  
Старый 22.09.2011, 06:44
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Imikle прав, не компилится даже с PChar()
Ответить с цитированием
  #11  
Старый 22.09.2011, 07:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Неподарок
Imikle прав, не компилится даже с PChar()

Вот так работает:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  h: cardinal;
begin
  h := FindWindow(nil, PChar('7-Zip File Manager'));
  if h > 0
    Then ShowWindow(h, SW_MINIMIZE)
    Else ShowMessage('Not found!');
end;

но это по заголовку, который может меняться.
Ответить с цитированием
  #12  
Старый 22.09.2011, 07:56
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

поиск по части заголовка и имени exe:
FindWindow777('opera') ;
FindWindow777('torrent', 'utorrent.exe') ;

PHP код:
uses psapi;
var
  
FoundHandleCardinal;
  
Matchstring;
  
exetofindstring;
function 
FindWindow777(TitlePartstringexenamestring ''): Cardinal;
  function 
Enumka(hhWndpPointer): BOOLstdcall; var s1s2string;
    function 
GetModule(hhWnd): string;
    var
      
Modulestring;
      
shit1Cardinal;

      function 
ProcessFileName(PIDDWORD): string;
      var
        
HandleTHandle;
      
begin
        Result 
:= '';
        
Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READFalsePID);
        if 
Handle <> 0 then
          
try
            
SetLength(ResultMAX_PATH);
            
begin
              
if GetModuleFileNameEx(Handle0PChar(Result), MAX_PATH) > 0 then
                SetLength
(ResultStrLen(PChar(Result)))
              else
                
Result := '';
            
end
          finally
            CloseHandle
(Handle);
          
end;
      
end;
    
begin
      GetWindowThreadProcessId
(hshit1);
      
result := ProcessFileName(shit1);
    
end;
    function 
GetCaption(hhWnd): string;
    var
      
Caption: array[0..255of char;
    
begin
      FillChar
(Captionsizeof(Caption), 0);
      
GetWindowText(hCaption255);
      
result := strpas(Caption);
    
end;

  
begin
    result 
:= true;
    if 
Pos(LowerCase(Match), LowerCase(GetCaption(h))) > 0 then
      
if exetofind '' then
      begin
        FoundHandle 
:= h;
        
result := false;
      
end else {begin
       s1 
:= GetModule(h);
       
s2 := GetCaption(h) ;  }
      if 
exetofind ExtractFileName(GetModule(h)) then
      begin
        FoundHandle 
:= h;
        
result := false;
      
end;  {end; }
  
end;
begin
  exetofind 
:= exename;
  
FoundHandle := INVALID_HANDLE_VALUE;
  
Match := TitlePart;
  
EnumWindows(@Enumka0);
  
result := FoundHandle;
end
Ответить с цитированием
  #13  
Старый 22.09.2011, 10:23
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Всем спасибо, было вкусно и полезно
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:43.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter