10

C++ で簡単なトレーナー コンソールを作成する計画がありますが、最初のステップで FindWindow() に問題があります。

#include <stdio.h>
#include <cstdlib>
#include <windows.h>
#include <winuser.h>
#include <conio.h>

LPCTSTR WindowName = "Mozilla Firefox";
HWND Find = FindWindow(NULL,WindowName);
int main(){
    if(Find)
    {
        printf("FOUND\n");
        getch();
    }
    else{
        printf("NOT FOUND");
        getch();
    }
}

上記のコードは、コマンド FindWindow() が実行されるかどうかを試すために使用しますが、出力を実行すると常に表示されます

見つかりません

プロパティ Project の Character Set を置き換えました

Unicode 文字セットを使用

マルチバイト文字セットを使用する

LPCTSTR

LPCSTR

また

LPCWSTR

しかし、結果は常に同じです。誰かが私を助けてくれることを願っています。

4

4 に答える 4

9
 HWND Find = ::FindWindowEx(0, 0, "MozillaUIWindowClass", 0);
于 2013-05-13T20:52:43.990 に答える
5

MSDNによると

lpWindowName [入力、オプション]

Type: LPCTSTR

The window name (the window's title). If this parameter is NULL, all window names match.

したがって、WindowName を「Mozilla Firefox」にすることはできません。これは、Firefox ウィンドウのタイトルが「Mozilla Firefox」ではなく、「Mozilla Firefox スタート ページ - Mozilla Firefox」または Web ページの名前に依存する可能性があるためです。ここに例の写真があります Firefox の本当のタイトル

したがって、コードは次のようになります (以下のコードは、上の画像のように正確なウィンドウのタイトル名「Mozilla Firefox スタート ページ - Mozilla Firefox」がある場合にのみ機能します。Windows 8.1 でテストしたところ、機能しました)。

void CaptureWindow()
{


RECT rc;
HWND hwnd = ::FindWindow(0, _T("Mozilla Firefox Start Page - Mozilla Firefox"));//::FindWindow(0,_T("ScreenCapture (Running) - Microsoft Visual Studio"));//::FindWindow(0, _T("Calculator"));//= FindWindow("Notepad", NULL);    //You get the ideal?
if (hwnd == NULL)
{
    return;
}
GetClientRect(hwnd, &rc);

//create
HDC hdcScreen = GetDC(NULL);
HDC hdc = CreateCompatibleDC(hdcScreen);
HBITMAP hbmp = CreateCompatibleBitmap(hdcScreen,
    rc.right - rc.left, rc.bottom - rc.top);
SelectObject(hdc, hbmp);

//Print to memory hdc
PrintWindow(hwnd, hdc, PW_CLIENTONLY);

//copy to clipboard
OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_BITMAP, hbmp);
CloseClipboard();

//release
DeleteDC(hdc);
DeleteObject(hbmp);
ReleaseDC(NULL, hdcScreen);

//Play(TEXT("photoclick.wav"));//This is just a function to play a sound, you can write it yourself, but it doesn't matter in this example so I comment it out.
}
于 2016-12-15T14:10:47.100 に答える
2

アプリケーションの完全な名前を使用する必要があります (Windows タスク マネージャー -> [アプリケーション] タブに表示されます)。

例:

Google - Mozilla Firefox

(Firefox で Google タブを開いた後)

于 2013-05-15T02:59:23.090 に答える