Tag: winapi

在Node-FFI中使用SendInput

我想使用FFI包从nodejs中的Windows Api使用SendInput函数。 我对C的了解是有限的,所以我无法弄清楚我有什么问题,我基本上是试图按键盘上的键。 那是我的代码: var ffi = require(‘ffi’); var ref = require (‘ref’); var struct = require (‘ref-struct’); var keyboardInput = struct({ ‘type’: ‘int’, ‘wVK’: ‘int’, ‘wScan’: ‘int’, ‘dwFlags’: ‘int’, ‘time’: ‘int’, ‘dwExtraInfo’: ‘int64’ }); var keyboardInputPtr = ref.refType(keyboardInput); var keyboard = new keyboardInput(); keyboard.type = 1; keyboard.wVK = 0x41; keyboard.wScan = 0; keyboard.dwFlags = […]

_wfreopen适用于c:/path/file.txt但不适用于c:\ path \ file.txt?

TCHAR finalpath[MAX_PATH]; GetCurrentDirectory(MAX_PATH,finalpath); TCHAR filename[] = TEXT(“\\lista.txt”); wcscat(finalpath,filename); wprintf(L”List will be saved to %s”, finalpath); 所以这基本上证实了我的最终路径确实是c:\ somepath \ lista.txt 但_wfreopen(TEXT(finalpath),TEXT(“w”),stdout); 如果我只是改变它 _wfreopen(TEXT(“c:/somepath/lista.txt”),TEXT(“w”),stdout); 一切都工作正常,为什么以及如何让它接受我的最终路径arg? 谢谢

从另一个线程操作GUI控件有什么问题吗?

我总是听说我应该只从GUI线程操作GUI控件,但我不明白从另一个线程这样做有什么问题。 我的意思是如果我想更改Window的标题栏文本,我需要做的就是向Window的消息队列发送消息。 那么从另一个线程做到这一点有什么不对?

在Win32 API中从命令行解析的字符的未处理exception

我必须解析命令行参数并将某些char转换为整数。 我有以下代码: TCHAR *token1; token1 = strchr(cmd_line, L’+’); MessageBox(NULL, token1, _T(“test”), NULL); //char *str = “+10 frogs”; TCHAR *endptr =” “; long n = strtol(token1 + 1, &endptr, 0); if (!*endptr) MessageBox(NULL, “No error”, _T(“test”), NULL); else MessageBox(NULL, “error”, _T(“test”), NULL); 在命令提示符下发送命令“WesOPC.exe +10 -regserver”时,消息框显示“+10 -regserver”。 我需要将10存储为整数。因此,我使用了strtol但显示了带错误的messagebox。 当我试图调试它时,在行看到的错误 long n = strtol(token1 + 1, &endptr, 0); […]

在C中查找机器的IP地址?

如何在Windows上以C语言获取本地计算机的IP地址? 我无法在以下代码中获取我的机器的IP地址: #include #include int main() { struct ifaddrs *id; int val; val = getifaddrs(&id); printf(“Network Interface Name :- %s\n”,id->ifa_name); printf(“Network Address of %s :- %d\n”,id->ifa_name,id->ifa_addr); printf(“Network Data :- %d \n”,id->ifa_data); printf(“Socket Data : -%c\n”,id->ifa_addr->sa_data); return 0; } 编译时我遇到错误: 致命错误C1083:无法打开包含文件:’net / if.h’:没有这样的文件或目录。 我不能使用#include 因为它只能在Linux上使用。

在C Win32中使用hBitmap = CreateDIBSection()保存.bmp文件

我有以下代码。 我想用这个信息创建一个.bmp文件来显示内存中的数据,这是一个从framegrabber复制到主内存的图像,有人可以让我来吗? 谢谢 LPSTR CreateBMP( HWND hAppWnd, int nImageType ) { void * pWinGBits = NULL; int i; Z_BITMAPINFO zWinGHeader; //用于终止DIB的bitmapinfo // create DC for bitmap. hDCBits = CreateCompatibleDC( ghDCMain ); switch ( nImageType ) { case bayer_filter: zWinGHeader.bmiHeader.biSize = sizeof( BITMAPINFOHEADER ); zWinGHeader.bmiHeader.biPlanes = 1; zWinGHeader.bmiHeader.biClrImportant = 0; zWinGHeader.bmiHeader.biHeight = -lYSize; zWinGHeader.bmiHeader.biWidth = lXSize; […]

在Visual Studio中写入文件时出错

Unhandled exception at 0x102e1cee (msvcr100d.dll) in filename.exe 0xC0000005: Access violation writing location 0x00416858 on. 调试指向行: if (_putc_nolock(ch, f) == EOF) 代码 #else /* _UNICODE */ if (_putc_nolock(ch, f) == EOF) #endif /* _UNICODE */ *pnumwritten = -1; else ++(*pnumwritten); } 在output.c中我相信它是在visual studio库中链接的。 我没有链接它。 我的代码是: body=”” myFile=CreateFile(“Sample.txt”,FILE_APPEND_DATA,FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); BufferNo=sprintf(body,”%.5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f \n”,a1,a2,a3,a4,a5,a6,a7,a8); […]

停止服务之前的WTSSendmessage

我试图在用户尝试停止服务时显示一个消息框。 为此,我使用了WTSSendmessage API ……一旦发生SERVICE_CONTROL_STOP事件,我就调用了该函数。 我在上面的步骤是对的吗? 因为一旦用户试图停止服务,我没有收到消息框。 请指导我…… 以下是我的代码片段:: case SERVICE_CONTROL_STOP: WTSSendMessage = (fptr1)GetProcAddress(hinstLib, “WTSSendMessage”); BOOL ret = WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, dwSession, lpszTitle, 12 ,lpszText, 7 ,MB_YESNO|MB_ICONINFORMATION, 0, &res, TRUE); ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING; SetServiceStatus( serviceStatusHandle, &serviceStatus ); SetEvent( stopServiceEvent ); return;

带控件的DialogEx:resize?

目的是调整最适合配置的Systemmetrics屏幕高度和对象机器上的screendepth的DialogEx窗口: int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { return DialogBoxW(hInstance, MAKEINTRESOURCEW(IDD_MAIN), nullptr, DlgProc); } IDD_MAIN在768p中设置为默认值。 我们将其IDD_760P并使用其资源文件配置作为基础来处理。 IDD_768P DIALOGEX 0, 0, 701, 191 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION “MahProject” FONT 8, “MS Sans Serif”, 0, 0, 0x0 BEGIN LTEXT “Add”,IDC_STATIC,506,10,14,8 EDITTEXT IDC_TEXT,528,7,120,14,ES_AUTOHSCROLL EDITTEXT IDC_NUMBER,647,7,21,14,ES_NUMBER […]

ERROR_IO_PENDING后的多个WriteFile

在我的应用程序中,当另一个Write操作在命名管道上挂起时,我正在测试WriteFile的行为。 管道处于消息模式(不是字节模式)。 为了使写入操作挂起,我保持命名管道的缓冲区非常小,并且客户端发送的数据多于缓冲区大小。 通过这种方式,我在客户端获得挂起的写操作。 我在服务器端面临以下问题: 使用ERROR_MORE_DATA失败ReadFile 。 它会更改缓冲区的内容,但不会更改接收的字节数。 服务器代码 //file server.cpp #include #include #include #include #define CONNECTING_STATE 0 #define READING_STATE 1 #define WRITING_STATE 2 #define INSTANCES 4 #define PIPE_TIMEOUT 5000 #define BUFSIZE 3 #define BUFSIZE2 1000 typedef struct { OVERLAPPED oOverlap; HANDLE hPipeInst; TCHAR chRequest[BUFSIZE2]; DWORD cbRead; DWORD cbReadSoFar; TCHAR chReply[BUFSIZE2]; DWORD cbToWrite; DWORD dwState; […]