سؤال

هل هناك طريقة لتقليل تطبيق خارجي أنني لا أملك السيطرة على من في دلفي التطبيق ؟

على سبيل المثال notepad.exe باستثناء طلب اريد تصغير سوف من أي وقت مضى فقط مثيل واحد.

هل كانت مفيدة؟

المحلول

يمكنك استخدام 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;

نصائح أخرى

أنا لست دلفي الخبراء ، ولكن إذا كان يمكنك استدعاء win32 واجهات برمجة التطبيقات ، يمكنك استخدام FindWindow و ShowWindow للحد من النافذة, حتى لو أنها لا تنتمي إلى التطبيق الخاص بك.

شكرا على هذا في النهاية أنا استخدم modifyed إصدار Neftali هو رمز لدي المدرجة أدناه في حالة أي شخص آخر لديه نفس القضايا في المستقبل.

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

كان دائما العودة 0, وذلك في حين تبحث عن السبب وجدت هذه الوظيفة التي من شأنها أن تجد 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;

أعتقد FindWindow(PChar('المفكرة'), النيل) يجب أن يكون FindWindow(النيل, PChar('المفكرة')) إلى إيجاد نافذة حسب العنوان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top