C++ C++;芬德温没有';行不通

C++ C++;芬德温没有';行不通,c++,findwindow,C++,Findwindow,我有Windows 8和Visual Studio 2013 #include <iostream> #include <windows.h> using namespace std; int main() { HWND hWnd = FindWindow(0,(LPCTSTR)"Skype"); if (hWnd == 0) { cerr << "Cannot find window" << endl; } return

我有Windows 8和Visual Studio 2013

#include <iostream>
#include <windows.h>
using namespace std;




int main()

{

HWND hWnd = FindWindow(0,(LPCTSTR)"Skype");
if (hWnd == 0)

{

    cerr << "Cannot find window" << endl;
}
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
HWND HWND=FindWindow(0,(LPCTSTR)“Skype”);
如果(hWnd==0)
{

cerr这个问题可能是因为您只是将C字符串转换为T字符串,而T字符串可能是一个宽字符串,所以它不起作用。请尝试以下方法:

HWND hWnd = FindWindow(0,_T("Skype"));

这可确保使用Windows API函数所期望的适当默认字符宽度声明字符串常量。

此问题可能是您只是将C字符串强制转换为T字符串,而T字符串可能是宽字符串,因此无法正常工作。请尝试以下操作:

HWND hWnd = FindWindow(0,_T("Skype"));

这可确保使用Windows API函数所期望的适当默认字符宽度声明字符串常量。

此问题可能是您只是将C字符串强制转换为T字符串,而T字符串可能是宽字符串,因此无法正常工作。请尝试以下操作:

HWND hWnd = FindWindow(0,_T("Skype"));

这可确保使用Windows API函数所期望的适当默认字符宽度声明字符串常量。

此问题可能是您只是将C字符串强制转换为T字符串,而T字符串可能是宽字符串,因此无法正常工作。请尝试以下操作:

HWND hWnd = FindWindow(0,_T("Skype"));


这将确保字符串常量声明为Windows API函数所期望的适当默认字符宽度。

关于
hwnd=FindWindowA(NULL,“Skype”);
?强制转换意味着“我知道我在做什么,现在闭嘴”但是,如果你知道你在做什么,你通常不需要首先抛出这个问题。讽刺。有点离题:你在开发Skype的一种“插件”吗?如果是这样,记住有一个Skype API:(我还没有用C++,但是C。.NET,但是我认为C的一个只是C++的包装),关于<代码> HWND= FindWindowA(NULL,Skype)
?演员阵容的意思是“我知道我在做什么,现在闭嘴”。然而,如果你知道你在做什么,你通常一开始就不需要演员阵容。讽刺的是,有点离题:你是否正在为skype开发一种“插件”?如果是的话,请记住有一个skype API:(我还没有用C++,但是C++的.NET,但是我认为C的一个只是C++的包装),关于<代码> HWND= FindWindowA(null,Skype),< /代码>?一个演员的意思是“我知道我在做什么,现在闭嘴”。但是,如果你知道你在做什么,你通常不需要首先抛出这个问题。讽刺。有点离题:你在开发Skype的一种“插件”吗?如果是这样,记住有一个Skype API:(我还没有用C++,但是C。.NET,但是我认为C的一个只是C++的包装),关于<代码> HWND= FindWindowA(NULL,Skype)?演员阵容的意思是“我知道我在做什么,现在闭嘴”。然而,如果你知道你在做什么,你通常一开始就不需要演员阵容。讽刺的是,有点离题:你是否正在为skype开发一种“插件”?如果是的话,请记住有一个skype API:(我还没有用C++,但是C++ .net,但是我认为C的一个只是C++的包装器)事实上,
\u T
不会转换任何东西。转换是当你施放某个东西时发生的事情。这只是一个在字符串上粘贴
L
前缀的宏。你是对的,我有一个大脑屁,使用了错误的措辞。我修复了它。@MSalters:那为什么要使用它呢?我的意思是,在字符串上只使用
L
前缀并不容易此宏?@Jack宏的作用取决于应用程序的编译器设置。如果编译器设置指定了Unicode字符集,则它将在L前面加上前缀。如果设置指定了MBCS,则它不会在L前面加上前缀。使用_T可保证在任何情况下都是正确的。它会有条件地加上L。如果定义了Unicode。T这是windows API的标准调用方式实际上,
\u T
不会转换任何东西。转换是当你转换某个东西时发生的事情。这只是一个宏,在字符串上粘贴
L
前缀。你是对的,我有一个大脑屁,使用了错误的措辞。我修复了它。@mAlters:那为什么要使用它呢?我的意思是,不容易理解只需在字符串上使用
L
前缀,而不使用此宏?@Jack宏的功能取决于应用程序的编译器设置。如果编译器设置指定了Unicode字符集,则它将在L前面加前缀。如果设置指定了MBCS,则它不会在L前面加前缀。使用_T可确保在任一ca中都是正确的se.it有条件地使用L。如果定义了UNICODE。这是windows API的标准调用样式实际上,
\T
不会转换任何内容。转换是当您转换某个内容时发生的事情。这只是一个在字符串上粘贴
L
前缀的宏。你是对的,我脑子出了一个屁,使用了错误的措辞。我修复了它。@MSalters:那么为什么要使用它呢?我的意思是,在字符串上使用
L
前缀比使用这个宏不容易吗?@Jack宏的作用取决于应用程序的编译器设置。如果编译器设置指定了Unicode字符集,那么它将在L前面加前缀。如果设置指定了MBCS,那么它不会在L前面加前缀。Using\u T保证在任何情况下都是正确的。它有条件地使用L。如果定义了UNICODE。这是windows API的标准调用样式实际上,
\u T
不会转换任何内容。转换是当您强制转换某个内容时发生的事情。这只是一个在字符串上粘贴
L
前缀的宏。你说得对,我有一个愚蠢的屁,使用了错误的措辞。我修复了它。@mAlters:那为什么要使用它呢?我的意思是,在字符串上使用
L
前缀比这个宏更容易吗?@Jack宏的作用取决于应用程序的编译器设置。如果编译器设置指定了Unicode字符集,那么它将在L前面加前缀。如果s指定MBCS,则它不会在L前面加前缀。使用_T可保证在任何情况下都是正确的。它会有条件地加L。如果定义了UNICODE。这是windows AP的标准调用样式