2011-07-27 37 views
1

我該如何編程雙擊windows xp/7中的系統托盤圖標並導致應用程序窗口打開?以編程方式雙擊systemtray圖標windows xp/7

+2

您試圖以錯誤的方式解決此問題。嚮應用程序發送一條消息,要求其打開。不要嘗試雙擊圖標。您無法在Windows XP *和* 7中可靠地完成這項工作。 –

回答

1

該程序是否要打開自己的應用程序?然後你可以發送消息到這個過程來強制它打開。

本文可能會幫助您在進程之間發送消息。 send message to other process

1

你不能。使用Spy ++看起來「用戶推薦通知區域」不提供單擊按鈕的方法,而且您無法控制圖標是否可見。

0

你可以使用http://msdn.microsoft.com/en-us/library/ms646310.aspx發送輸入到操作系統,雙擊上的特定位置:

void MouseMove (double x, double y) 
{ 
    double fx = x*65535.0f; 
    double fy = y*65535.0f; 
    INPUT Input={0}; 
    Input.type  = INPUT_MOUSE; 
    Input.mi.dwFlags = MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE; 
    Input.mi.dx = (long)fx; 
    Input.mi.dy = (long)fy; 
    ::SendInput(1,&Input,sizeof(INPUT)); 
} 
void lClick(){ 
    INPUT Input={0}; 
    // left down 
    Input.type = INPUT_MOUSE; 
    Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; 
    ::SendInput(1,&Input,sizeof(INPUT)); 
    ::ZeroMemory(&Input,sizeof(INPUT)); 
    // left up 
    Input.type = INPUT_MOUSE; 
    Input.mi.dwFlags = MOUSEEVENTF_LEFTUP; 
    ::SendInput(1,&Input,sizeof(INPUT)); 
} 

,然後調用鼠標移動上哪裏是圖標,單擊左鍵兩次的地方。 但是這將暗示程序任務欄圖標不會移動...取決於程序是什麼,以及是否瞭解計算機。