내 목표는 Windows 작업 표시 줄에 아이콘이있는 창이 있는지 확인하는 것입니다.
Windows 작업 표시 줄 아이콘 다시
내 질문은 다음과 같습니다. 가장 간단한 해결책은 무엇입니까?
데비안 기반 OS-es에서 이러한 기능을 구현하는 방법은 매우 좋은 조언이 될 것입니다. 그렇습니다. 델파이는 리눅스 기반 OS를 지원하지 않지만 내 프로젝트는 FPC \ LAZARUS를 사용하고 있으며, 거의 동일한 WIN 플랫폼을 위해서만 "델파이"라고 표시하고 있음을 알고 있습니다.
불행히도 나는이 두 작업에 대한 작업을 중지하고 현재 일부 링크를 찾을 수 없습니다.
아마, 나는 이미 몇 가지 실험과 직감에 근거한 결정을했습니다.
기능의 코드가있다 :
function IsTaskbarWindow(const AWinHandle: THandle): boolean;
var
wi: TWindowInfo;
begin
Result := GetWindowInfo(AWinHandle, wi);
if Result then
Result :=
IsWindowVisible(AWinHandle) and
(
(
((wi.dwExStyle and WS_EX_TOOLWINDOW) = 0) and
((wi.dwExStyle and WS_EX_NOACTIVATE) = 0) and
((wi.dwStyle and WS_CHILD) = 0) and
(GetWindow(AWinHandle, GW_OWNER) = 0)
) or
((wi.dwExStyle and WS_EX_APPWINDOW) <> 0)
);
end;
내가 구글과 유래를 사용하는 간단한 결정을 찾기 위해 노력하고 있지만, 예를 들어, 일부 응용 프로그램이 제대로 작동하지 않는이 코드를 작성하기 전에 :
- 그들은 표시 전체 응용 프로그램이 트레이에 "숨겨져 있고"보이는 윈도우가 없음 (Comodo Internet Security)
- 작업 표시 줄 아이콘에 단 하나의 창 (PotPlayer)이있는 동안 둘 이상의 창을 표시합니다.
- 작업 표시 줄의 해당 창 작업 표시 줄에 표시되는 아이콘 (Opera, DoubleCommander)
괜찮습니까? 내 초기 질문 : Windows tskbar에서 창을 결정하는 방법을 기억합니까? 그리고 FPC와 LCL을위한 crossplatform에 대해 제발
한 번에 너무 많은 다른 질문을하고 있기 때문에이 질문에 답변했습니다. 당신은 당신이 보여준 코드보다 더 좋은 것이 있는지 물었고, 전혀 관련이없는 플랫폼에서 비슷한 것을하는 법을 물어 보았습니다. * 그리고 당신은 당신의 "초기 질문"을 어떻게 * 어떻게 * 요구하는지 잘못 설명했습니다 초기 질문 *이 실제로 요구 한 것 대신에 뭔가를하십시오. 어떤 코드에 개선이 있는지 여부입니다. * how * 질문은 무리 중 가장 좋은 질문입니다. 실제로 * 결코 물어 보지 못한 것은 부끄러운 일입니다. –
이 질문을 구조하기 위해 모든 코드를 제거하십시오. 창에 작업 표시 줄에 아이콘이 있는지 여부를 감지하는 방법을 묻는 질문을 다시 작성하십시오. 그런 다음 자신의 질문에 * 답변 *으로 코드를 게시하십시오. 더 나은 답변이 있으면 사람들이 게시합니다. 어떤 질문이 맞을 수 있는지에 대한 예/아니오 질문을하는 대신에 * 투표로 어느 것이 가장 적합한 지 결정하십시오. Linux 솔루션을 원한다면 별도로 요청하거나 교차 플랫폼 솔루션을 요청하고 * 코드를 게시하지 마십시오 (코드가 크로스 플랫폼 솔루션이 아니기 때문에). –
@RobKennedy 설명해 주셔서 감사합니다. 위에서 언급했듯이 이미 많은 코드 예제를 보았습니다.이 예제는 제대로 작동하지 않습니다 (일부 예제가 제공됨). 그래서 저는 제 코드의 예를 보여줍니다. 제 경우에는 제대로 작동합니다. 그리고 내 질문은 : 단지 하나의 솔루션이나 뭔가 더 간단하고 편리하게 사용할 수 있습니까? – Abelisto