1

Visual Studio 2015でC++を使用してWindowsアプリケーションを開発しています。現在注目されているアプリを返すには、GetForegroundWindow()GetWindowText()が必要です。しかし、「windows.h」を含めても、GetForegroundWindow()GetWindowText()は定義されていません。私はGetForegroundWindow()の定義に行きました、それは私に "WinUser.h"につながったので、 "WinUser.h"も含めました。しかし、それはまだ助けることができませんでした。ここに私のコードは:Visual Studioの "GetForegroundWindow:identifier not found" 2015

#include "MainPage.xaml.h" 
#include <windows.h> 
#include <WinUser.h> 
#include <winapifamily.h> 
#include <string> 
#include <stdio.h> 
#include <iostream> 

using namespace App1; 
using namespace Platform; 
using namespace Windows::Foundation; 
using namespace Windows::Foundation::Collections; 
using namespace Windows::UI::Xaml; 
using namespace Windows::UI::Xaml::Controls; 
using namespace Windows::UI::Xaml::Controls::Primitives; 
using namespace Windows::UI::Xaml::Data; 
using namespace Windows::UI::Xaml::Input; 
using namespace Windows::UI::Xaml::Media; 
using namespace Windows::UI::Xaml::Navigation; 
using std::cout; 
using std::endl; 

MainPage::MainPage() 
{ 
InitializeComponent(); 
} 

HWND currenthwnd, hwnd = NULL; 
char wnd_title[1024]; 

void App1::MainPage::Focus_app_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) 
{ 
currenthwnd = GetForegroundWindow(); 
GetWindowText(hwnd, wnd_title, sizeof(wnd_title)); 
cout << wnd_title << endl; 
} 

アイデア?前もって感謝します! WinUser.h

+3

あなたはデスクトップアプリケーションではなくWinRTアプリケーションを作成しています。 GetForegroundWindow()のような従来のwinapi関数の多くを使うことはできません。このような他のプロセスと対話することも許されません.WinRTアプリケーションはこの種のやりとりを禁止するサンドボックス内で実行されます。それは、Storeからのアプリケーションを幸せにダウンロードするような種類のユーザーを保持します。当然のことながら、間違ったプロジェクトテンプレートを使用して作業を始めただけです。 –

+0

@HansPassant私は見る!私は普遍的なウィンドウのアプリのテンプレートを使用していた。このテンプレートを使用して現在フォーカスされているアプリを検出できる方法はありますか?または、代わりにwin32/Windowsフォーム/ WPFアプリケーションを作成する必要がありますか?ありがとうございます! – Lolo

+0

私は冗談ではありませんでした。別のアプリがフォアグラウンドを取得したときにあなたのアプリはもはや実行されていません。 –

答えて

4

GetForegroundWindowGetWindowText#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)マクロブロック内で宣言されています。だからあなたはWindowsデスクトップアプリケーションのためにそれらを使うことができました。

+0

ありがとう!!私は宣言を追加しようとしましたが、エラーはなくなりました。しかし、それはApp.xaml.objに "LINK2019:未解決の外部シンボルpublic:__cedcl .."という新しいエラーを投げかけました。何が起きているのか知っていますか?申し訳ありません。 – Lolo

+0

もちろんそれはそうです。このAPIはターゲットプラットフォームでは使用できないため、これらのメソッドを使用することはできません。それのまわりではありません。 – Ari0nhh

+0

あなたの言ったように私のターゲットプラットフォームはWindowsデスクトップです。私が使うことができる他の方法を知っていますか?ありがとう! – Lolo