Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

Поднять окно excel.   Найти похожие ветки 

 
samalex   (2004-10-05 17:36) [0]

Уважаемые знатоки!!! Помогите решить проблему.
Есть оболочка, программа, написанная другими людьми, которая создает окна-документы, видимо, посредством VBA. Так вот, эти окна прячутся под саму оболочку. Я посмотрел, в процессах они называютя Excel.exe.
Вопрос, как эти окна искать и выталкивать на передний план. Написать резидентную программу. В принципе это возможно?


 
olookin ©   (2004-10-05 17:43) [1]

Возможно. Можно определять их по содержимому имени окна - окна Excel содержат текст Microsoft Excel. Определять handle такого окна и работать с ним...


 
Роман Снегирев   (2004-10-05 17:59) [2]

Excel.Visible:=True


 
samalex   (2004-10-05 18:32) [3]

Я не сам создаю Excel-объект, а ищу уже готовый и мне нужно вывести его наверх.


 
programania ©   (2004-10-05 18:40) [4]

FindWindow+F1
SetForegroundWindow+F1


 
olookin ©   (2004-10-05 18:41) [5]

Вот этот пример (при небольшом видоизменении) делает именно отображение исходно скрытого окна Excel

procedure TForm1.Activateapplication1Click(Sender: TObject);
var tl: string;
begin
 tl:=selecteditem.Caption; h:=Form1.Handle; h1:=h; no:=false;
 while no=false do begin h:=GetNextWindow(h,GW_HWNDNEXT);
 if h=0 then no:=true; GetWindowText(h,p,255); s:=StrPas(p);
 if s=tl then begin ShowWindow(h,SW_RESTORE); SetForegroundWindow(h);
 RedrawWindow(h,0,0,RDW_VALIDATE and RDW_UPDATENOW and RDW_ALLCHILDREN);
 no:=true; break; end; end;
 if no=false then begin h:=h1;
 while no=false do begin h:=GetNextWindow(h,GW_HWNDPREV);
 if h=0 then no:=true; GetWindowText(h,p,255); s:=StrPas(p);
 if s=tl then begin ShowWindow(h,SW_RESTORE); SetForegroundWindow(h);
 RedrawWindow(h,0,0,RDW_VALIDATE and RDW_UPDATENOW and RDW_ALLCHILDREN);
 no:=true; break; end; end; end;
end;


 
samalex   (2004-10-06 10:06) [6]

programania

procedure TF_Menu00.Button1Click(Sender: TObject);
var
 Wnd, Wnd1 : integer;
 buff : ARRAY[0.. 127] OF Char;
 _Handle : HWND;
begin
 Wnd := GetWindow(Application.Handle, gw_HWndFirst);
 WHILE Wnd <> 0 DO
 BEGIN
   GetWindowText (Wnd, buff, sizeof (buff ));
   If (Trim(StrPas(buff))="График") then
   begin
     SetForegroundWindow(Wnd);
     Exit;
   end;
   Wnd := GetWindow (Wnd, gw_hWndNext);
 END;

По нажатию этой кнопки окно с Title "График" находится и выводится на передний план. Но мне нужна автоматическая работа - без нажатия кнопки. Я поставил таймер с интервалом 1 сек и обработчиком поставил эту функцию. Проблема - программа работает, если окно этой программы активно, если нет, то "График" не поднимается. Пробовал ставить
SetActiveWindow(Application.Handle);
не помогает.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.159 c
1-1096963151
roma
2004-10-05 11:59
2004.10.17
Forma i Knopki


1-1096983368
samalex
2004-10-05 17:36
2004.10.17
Поднять окно excel.


1-1096630109
Kolan
2004-10-01 15:28
2004.10.17
Delphi + новая компонента = НЕРАБОТАЕТ delphi


1-1096608379
Slonco
2004-10-01 09:26
2004.10.17
Как перевести текст из WIN кодировки в DOS кодировку ?


1-1097017647
ДЫМ
2004-10-06 03:07
2004.10.17
Как обработать исключения при чтении/записи на дискету?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский