Excel'i aktif hale(öne) getirme problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Excel'i aktif hale(öne) getirme problemi

Mesaj gönderen karflake »

Merhaba.

Excel(2007)'e SendKey ile bir takım bilgiler göndermem gerektiği için, aşağıdaki gibi bir kod yazdım. Excel'in başlığı, açık olan çalışma kitabınına göre değiştiği için, FindWindow apisini başlığa göre değil, class name'e göre kullandım. Winspector ile Excel'in class name'ini buldum ama bir türlü Excel'i öne getiremedim.

Kod: Tümünü seç

procedure TForm1.btnExcelClick(Sender: TObject);
var
  pencere: hwnd;
begin
  pencere:=FindWindow('EXCEL7',nil);
  if pencere<>0 then
  begin
    showmessage('Pencere bulundu. Öne getirelecek!');
    ShowWindow(pencere, SW_MAXIMIZE);
    BringWindowToTop(pencere);
  end
  else
    showmessage('Pencere bulunamadı!');
end;
Yukarıdaki kodun çalışmamasına rağmen, aynı yöntemle yazdığım, Internet Explorer'ı öne getiren, aşağıdaki kod gayet güzel çalışıyor.

Kod: Tümünü seç

procedure TForm1.btnIeClick(Sender: TObject);
var
  pencere: hwnd;
begin
  pencere:=FindWindow('IEFRAME',nil);
  if pencere<>0 then
  begin
    showmessage('Pencere bulundu. Öne getirelecek!');
    ShowWindow(pencere, SW_MAXIMIZE);
    BringWindowToTop(pencere);
  end
  else
    showmessage('Pencere bulunamadı!');
end;
Excel'in öne gelmeme problemini nasıl çözebilirim?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Excel'i aktif hale(öne) getirme problemi

Mesaj gönderen mrmarman »

Merhaba.
@karflake yazdı:Excel'in başlığı, açık olan çalışma kitabınına göre değiştiği için, FindWindow apisini başlığa göre değil, class name'e göre kullandım.
Yaklaşımın doğru ancak Excel ana ekranının classname'i "Excel7" değil "XLMAIN" olacaktı. Burada hata olmuş.
Resim
Resim ....Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Excel'i aktif hale(öne) getirme problemi

Mesaj gönderen Lord_Ares »

ShowWindow(pencere,SW_SHOW);
SetForegroundWindow(pencere);
şeklinde yapmalısın.
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Re: Excel'i aktif hale(öne) getirme problemi

Mesaj gönderen karflake »

mrmarman yazdı:Merhaba.

Yaklaşımın doğru ancak Excel ana ekranının classname'i "Excel7" değil "XLMAIN" olacaktı. Burada hata olmuş.
Bu yanıt sorunumu çözdü. Teşekkürler.
Cevapla