パラメータ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);
}
SHAppBarMessageは、タスクバーを移動するのではなく、独自のアプリケーションバーを移動するためのものです。 –
返信いただきありがとうございます:) Windows/MSDNにはなぜ機能がありますか?移動できない場合、SHAppBarMessage&ABM_SETPOSはありますか? –