1

プログラムのユーザーが特定の Web サイトにアクセスしているかどうかを確認する方法を見つけるのに苦労しています。現在どの Web サイトにアクセスしているかを示すポップアップ ボックスを開きたい場合、どのように行うのが最善でしょうか?

色々と考えたのですが、なかなか結論が出ません。プロセスを参照するか、ウィンドウを確認して、開いているブラウザを確認することを考えましたが、どうすればわかりますか? 正確なウェブサイトのアドレスがわからなくても、名前だけでも構いません。

たとえば、現在開いているウィンドウに「訪問した Web サイトを確認してください - スタック オーバーフロー - Mozilla Firefox」と表示されていますが、プログラミングの観点からそれを取得する方法はありますか? どういうわけか、現在開いているウィンドウを確認して読んでください。

助けてくれてありがとう。

4

2 に答える 2

2

アクティブ ウィンドウのタイトルを取得するには、次のコードを使用します。

HWND hwnd = GetForegroundWindow();
CString title;
LPTSTR str = title.GetBufferSetLength(GetWindowTextLength(hwnd));
GetWindowText(hwnd, str, title.GetLength() + 1);
if (title.IsEmpty())title = _T("User Desktop");
...

アクティブなウィンドウは「タイトル」の下になります。

アクティブな実行中のアプリケーションを取得するには、次のコードを使用します。

    DWORD pid;
    GetWindowThreadProcessId(GetForegroundWindow(), &pid);
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
if (hProcess != NULL)
{
    TCHAR path[MAX_PATH] = { 0 };
    TCHAR filename[MAX_PATH] = { 0 };
    GetProcessImageFileName(hProcess, path, MAX_PATH);
    _wsplitpath(path, NULL, NULL, filename, NULL);
    CloseHandle(hProcess);
...

ファイル名はアクティブなアプリケーションを保持します

于 2015-05-27T10:29:10.910 に答える
1

Web ブラウザーから現在のサイトの正確な URL を取得する方法は、ブラウザーごとに異なります。ほとんどの場合、アプリケーションが必要な情報を取得するために通信できるブラウザ プラグインまたは拡張機能を作成するのが最も簡単な方法です。それが実行可能なオプションであるかどうかは、あなたがしようとしていることと、ユーザーがプラグインをインストールする意思があるかどうかによって決まります。Yahoo Messenger などの多くのアプリケーションは、メッセンジャー機能をブラウザーに統合するためにこれを行っていましたが、今でもそうしているかどうかはわかりません。

ブラウザごとに異なるため、タイトルだけを取得するだけでも問題が発生します。場合によっては、 を使用GetWindowTextしてキャプション バーのタイトルを取得できます。残念ながら、Internet Explorer や Chrome などのブラウザはタブやカスタム埋め込みコントロールを使用してその情報をユーザーに表示するためGetWindowText、この場合の使用は限定的です。

GetWindowTextただし、キャプション バーのテキストを取得するために使用するには、特定の Web ブラウザ ウィンドウへのハンドルを取得する必要があります。これを行うには、ウィンドウまたはウィンドウ クラス(C++ クラスではない)を所有するプロセス IDEnumWindowsなどの情報を使用して、それがブラウザー ウィンドウかどうかを判断します。また、複数のブラウザ ウィンドウが開いている可能性にも対処する必要があります。この場合、タイトルのリストを表示してユーザーに選択させることができます。それは、実際に何を達成しようとしているかによって異なります。

于 2013-06-22T20:17:26.400 に答える