2008-09-25 7 views
5

के साथ एक बाहरी अनुप्रयोग को कम से कम वहाँ है कि मैं से नियंत्रण अपने हाथ में नहीं है मेरी डेल्फी आवेदन के साथ-में एक बाहरी अनुप्रयोग को कम से कम करने के लिए एक तरीका है?डेल्फी

उदाहरण notepad.exe, आवेदन मैं कम करने के लिए ही कभी एक उदाहरण होगा चाहते को छोड़कर के लिए

उत्तर

8

आप FindWindow का उपयोग आवेदन हैंडल और ShowWindow उसे कम से कम करने के लिए खोजने के लिए कर सकते हैं।

var 
    Indicador :Integer; 
begin 
    // Find the window by Classname 
    Indicador := FindWindow(PChar('notepad'), nil); 
    // if finded 
    if (Indicador <> 0) then begin 
    // Minimize 
    ShowWindow(Indicador,SW_MINIMIZE); 
    end; 
end; 
3

मैं डेल्फी विशेषज्ञ नहीं हूं, लेकिन यदि आप Win32 एपिस का आह्वान कर सकते हैं, तो आप विंडो को कम करने के लिए FindWindow और ShowWindow का उपयोग कर सकते हैं, भले ही यह आपके ऐप से संबंधित न हो।

+0

मैं तुम्हें वोट दिया है, जैसा कि आप मुझे सही रास्ते पर डाल दिया, लेकिन अंत में मैं इस्तेमाल किया Neftali के कोड – Re0sless

2

इस के लिए धन्यवाद, अंत में मैं Neftali's कोड का एक modifyed संस्करण का उपयोग किया है, मैं यह नीचे शामिल किया है मामले में किसी और किसी भी एक भविष्य में एक ही मुद्दे हैं।

FindWindow(PChar('notepad'), nil); 

हमेशा की तरह, 0 लौट रहा था तो, जबकि एक कारण है कि मैं this function कि hwnd मिलेगा पाया, और है कि एक का इलाज काम की तलाश में।

function FindWindowByTitle(WindowTitle: string): Hwnd; 
    var 
     NextHandle: Hwnd; 
     NextTitle: array[0..260] of char; 
begin 
     // Get the first window 
     NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST); 
     while NextHandle > 0 do 
     begin 
     // retrieve its text 
     GetWindowText(NextHandle, NextTitle, 255); 
     if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then 
     begin 
      Result := NextHandle; 
      Exit; 
     end 
     else 
      // Get the next window 
      NextHandle := GetWindow(NextHandle, GW_HWNDNEXT); 
     end; 
     Result := 0; 
end; 

procedure hideExWindow() 
var Indicador:Hwnd; 
begin 
    // Find the window by Classname 
    Indicador := FindWindowByTitle('MyApp'); 
    // if finded 
    if (Indicador <> 0) then 
    begin 
     // Minimize 
     ShowWindow(Indicador,SW_HIDE); //SW_MINIMIZE 
    end; 
end; 
+1

ध्यान दें कि यह Windows Vista पर काम नहीं करेगा जब तक कि आपके आवेदन ऊंचा विशेषाधिकारों के साथ चलाते हैं। –

0

मुझे लगता है कि FindWindow (PChar ('नोटपैड'), नहीं के बराबर) शीर्षक से खिड़की को खोजने के लिए FindWindow (शून्य, PChar ('नोटपैड')) होना चाहिए।