2010-12-05 37 views
1

パラメータABM_SETPOSを指定してwin32関数SHAppBarMessage()を使用してMYタスクバーをプログラムで移動しようとしています。SHAppBarMessageを使用してタスクバーを移動する

私が知っているのは&です。「常にユーザーを制御してください」&私が知っていることは、アプリがこれを行う理由がないということです。私はwin32を学んでいます&この問題は、私がこの問題をさらに解決したいと思っている間に私の最高のものを得ています&! SHAppBarMessage関数がある場合、Windowsはタスクバーの移動を許可する必要があります。

SHAppBarMessageでタスクバーを右に移動させる方法についてアドバイスをいただけますか?

以下のコードは、タスクバーを画面の右端に移動しようとする2つの方法を使用しています。どちらの方法も失敗する&私はMSDNを検索したが、ウィンドウズ7ではタスクバーを移動できないかもしれないと考え始めた&ドキュメンテーションのどれもが償却されているとは思わない。

最初のメソッドは、ABM_SETPOSを試みる前にABM_QUERYPOSを使用して1番目の丁寧な標準に従いますが、これはタスクバーを移動しません。

BOOL moveTaskBar(UINT pos, bool a) 
{ 
// Post: 

APPBARDATA barData; 
RECT  barRect; 
HWND  hTaskbar = FindWindow("Shell_TrayWnd", NULL); 

SetRect(&barRect, 1310, 10, 1350, 740); // These dimensions & coords are within my screens bounds so thats not a problem 

barData.cbSize   = sizeof(APPBARDATA); 
barData.hWnd    = hTaskbar; 
barData.uCallbackMessage = 0; 
barData.uEdge   = pos; 
barData.rc    = barRect; 
barData.lParam   = (LPARAM) FALSE; 

BOOL fResult = (BOOL) SHAppBarMessage(ABM_QUERYPOS, &barData); // Get system to verify & suggest position 
fResult = (BOOL) SHAppBarMessage(ABM_SETPOS, &barData);  // Set position 
fResult = (BOOL) SHAppBarMessage(ABM_WINDOWPOSCHANGED, &barData); // Inform ??? that the taskbar pos has been changed 

// Debugging 
// fResult = (BOOL) SHAppBarMessage(ABM_ACTIVATE, &barData); 
// fResult = (BOOL) SHAppBarMessage(ABM_GETTASKBARPOS, &barData); 


return (fResult == 0); 
} 

私の第二の方法は、xにyの位置を移動するために、タスクバーHWNDを強制しようと、これは私がやりたくないものですが、私はタスクバーを移動するための方法を見つけようとしていますしかし、とにかくこの方法もうまくいきません。 Windows 7ではタスクバーを移動できないと思いますか?これを実行する方法はありません

BOOL moveTaskBar(UINT pos) 
{ 
// Post: 

HWND  hTaskbar = FindWindow("Shell_TrayWnd", NULL); 

SetWindowPos(hTaskbar, NULL, barData.rc.left, barData.rc.top, barData.rc.right, barData.rc.bottom, SWP_NOSENDCHANGING); 
ShowWindow(hTaskbar, SW_SHOW); 

UpdateWindow(hTaskbar); 

HWND hDesktopWindow = GetDesktopWindow(); 

RedrawWindow(hDesktopWindow, NULL, NULL, RDW_FRAME|RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN); 

SystemParametersInfo(SPI_SETWORKAREA, 0, NULL, SPIF_SENDCHANGE); 

UpdateWindow(hDesktopWindow); 

} 
+0

SHAppBarMessageは、タスクバーを移動するのではなく、独自のアプリケーションバーを移動するためのものです。 –

+0

返信いただきありがとうございます:) Windows/MSDNにはなぜ機能がありますか?移動できない場合、SHAppBarMessage&ABM_SETPOSはありますか? –

答えて

2

、ユーザーがあなたのプログラム(私はあなたがあなた自身のプログラムの利用者であるかもしれないことを知っているが、理由です)、ない設定することを所有しています。

関連する問題