تصغير تطبيق خارجي مع دلفي
سؤال
هل هناك طريقة لتقليل تطبيق خارجي أنني لا أملك السيطرة على من في دلفي التطبيق ؟
على سبيل المثال 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('المفكرة')) إلى إيجاد نافذة حسب العنوان.