Tag: winapi

使用httpSendRequest c ++上传文件

我试图通过POST请求(c ++和winapi)将文件发送到HTTP服务器,步骤: // Read file into “buff” and file size into “buffSize” …. …. …. HINTERNET internetRoot; HINTERNET httpSession; HINTERNET httpRequest; internetRoot = InternetOpen(agent_info, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL); //Connecting to the http server httpSession = InternetConnect(internetRoot, IP,PORT_NUMBER, NULL, NULL, INTERNET_SERVICE_HTTP, NULL, NULL); //Creating a new HTTP POST request to the default resource on the server […]

我的字符集有什么问题(Win32 API)

我目前正在使用本教程学习Win32,而且我对显示的角色很难。 以这段代码为例,在创建时向我的窗口添加一个菜单: case WM_CREATE: { HMENU hMenu, hSubMenu; HICON hIcon, hIconSm; hMenu = CreateMenu(); hSubMenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, “Exit”); AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, “File”); hSubMenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, “&GO”); AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, “&Stuff”); SetMenu(hwnd, hMenu); hIcon = LoadImage(NULL, “Stuff.ico”, IMAGE_ICON, 32, 32, LR_LOADFROMFILE); if (hIcon) SendMessage(hwnd, WM_SETICON, ICON_BIG, […]

Win32:工具栏对话框似乎永远不会得到焦点并导致主窗口处理缓慢?

我正在按照本教程编写应用程序。 我知道本教程的日期,因此,我已经调整了代码以考虑unicode。 我有一个看起来像MDI的主窗口。 然后,我有一个“ 视图”菜单,可以切换工具栏对话框以显示和隐藏。 当我显示对话框时,会显示该对话框,但PUSHBUTTON未正确显示。 它们仅在我再次单击主窗口时出现。 另外,我似乎无法点击任何PUSHBUTTON进入我的工具栏对话框。 资源( resource.h )定义如下(仅显示与此问题相关的内容): #define IDD_TOOLBAR 102 #define IDC_PRESS 1000 #define IDC_OTHER 1001 #define ID_VIEW_SHOWTOOLBAR 40002 #define ID_VIEW_HIDETOOLBAR 40003 我的.rc文件中的对话框如下: IDD_TOOLBAR DIALOGEX 0, 0, 85, 50 STYLE DS_FIXEDSYS | DS_MODALFRAME | WS_CAPTION | WS_POPUP EXSTYLE WS_EX_TOOLWINDOW CAPTION L”Toolbar” FONT 8, “MS Shell Dlg” BEGIN PUSHBUTTON L”&Press this button”, […]

如何确定套接字是否已关闭

我有一个简单的客户端服务器程序,但主要问题是,一旦在客户端和服务器之间建立连接,如果客户端关闭程序,服务器会重复执行最后一条消息,这有时会产生巨大的问题。 所以我想要的是,如果有任何函数可以调用以获取SOCKET结构的状态,那么如果客户端关闭程序,服务器将知道停止。 我只需要从函数查找错误套接字的函数。 顺便说一句,我在Win32 c中编写这个程序。 我试过if(mySocket == SOCKET_ERROR)似乎不起作用……除非我用错了。 我刚刚开始联网。 if(!sockServer.RecvData( recMessage, STRLEN )){return 0;} // where bool Socket::RecvData( char *buffer, int size ) { int i = recv( mySocket, buffer, size, 0 ); if(!i){return false;} buffer[i] = ‘\0’; return true; } //this isn’t working

在Windows中的套接字上使用fprintf

我正在尝试在Windows上的套接字上使用fprintf。 许多在线示例都是UNIX示例 。 Windows的等效代码就是我在这里要问的。 最后,我想这样做: fprintf(file_handle_to_socket, “hello world\r\n”); 我不想使用WriteFile,snprintf或其他任何东西。 只是fprintf()。 或多或少显示步骤的伪代码将是有帮助的。 这是我到目前为止: unsigned short port = enter_port; int result = 0; WSADATA wsaData; result = WSAStartup(MAKEWORD(2, 2), &wsaData); struct sockaddr_in local; memset(&local, 0, sizeof(struct sockaddr_in)); local.sin_port = htons(port); local.sin_family = AF_INET; local.sin_addr.s_addr = htonl(INADDR_ANY); int sock = socket(AF_INET, SOCK_STREAM, 0); if(sock == INVALID_SOCKET) { fprintf(stdout,”invalid […]

为什么在64位平台上BSTR长度前缀为4个字节?

似乎在64位平台上,有一个8字节长度的前缀是合理的。 如果我们可以解决超过4Gb的内存,为什么不允许,比如5Gb字符串? 答案只是“按规范”还是存在一些我不知道的互操作性/向后兼容性原因? 谢谢。

Java JNA UCHAR和PUCHAR

我希望得到一个Java字符串’ WlanHostedNetworkSetSecondaryKey ‘和’ WlanHostedNetworkSetProperty ‘。 一个人想要一个带有CHAR []的结构中的结构,而第一个需要一个PUCHAR。 我尝试使用String,char [],byte []和Memory ,但是它们会继续产生相同的错误(错误参数或错误的配置文件为第一个)。 任何方式可能用JNA调试更多(可能不是:()?我也无法读取使用的characterencoding,除了它不是ANSI ..任何帮助都会很棒! * DWORD WINAPI WlanHostedNetworkSetSecondaryKey( __in HANDLE hClientHandle, __in DWORD dwKeyLength, __in PUCHAR pucKeyData, __in BOOL bIsPassPhrase, __in BOOL bPersistent, __out_opt PWLAN_HOSTED_NETWORK_REASON pFailReason, __reserved PVOID pvReserved * DWORD WINAPI WlanHostedNetworkSetProperty( __in HANDLE hClientHandle, __in WLAN_HOSTED_NETWORK_OPCODE OpCode, __in DWORD dwDataSize, __in PVOID pvData, __out_opt […]

Win32 API计时器

我正在使用系统定时器(clock()函数,请参阅time.h)来计算一些串行和USB通信。 我所需要的只是约1毫秒。 我注意到的第一件事是个别时间可以超出(加或减)10毫秒。 随着事件的发生,对一些较小的事件进行定时导致时间不准确。 总体时间略好一些。 在MSDN上有点根后,我偶然发现了windows多媒体库中的定时器(timeGetTime(),参见MMSystem.h)。 这对于1ms的水平而言具有相当好的准确性。 之后发生了奇怪的事情,经过几天的完美工作(可爱的日志和有用的时间),这一切都变成了梨形,因为这个API也开始显示这种奇怪的粒度(而不是一堆小通信消息需要3ms,2ms,3ms,2ms,3ms等它出现了0ms,0ms,0ms,0ms,15ms等。重新启动PC恢复了正常的准确性但是在一些不确定的时间(一小时左右之后),anomoly返回了。 任何人都对如何在Windows XP(32位Pro,使用Visual Studio 2008)上获得这种级别的计时准确性有任何想法或建议。 我的小时间class: class TMMTimer { public: TMMTimer( unsigned long msec); TMMTimer(); void Clear() { is_set = false; } void Set( unsigned long msec=0); bool Expired(); unsigned long Elapsed(); private: unsigned long when; int roll_over; bool is_set; }; /** Main constructor. */ TMMTimer::TMMTimer() { is_set […]

如何在win32api应用程序中使多行文本框的制表符停止工作

我有一个用c编写的win32api应用程序。 主窗口中的所有控件都是手动创建的,如下所示: hEditSource = CreateWindowEx(WS_EX_CLIENTEDGE, L”EDIT”, NULL, WS_VISIBLE | WS_CHILD | WS_TABSTOP | ES_MULTILINE | ES_READONLY, someLeft, someTop, someWidth, someHeight, hWndMain, NULL, hInst, NULL); 起初我没有在主消息循环中应用IsDialogMessage测试,因此所有控件的制表位都不起作用。 现在我已经完成了,除了上面的多行文本框外,每个控件都可以。 事实上,当按下标签时没有任何反应。 没有焦点移动,没有标签字符插入(之后将丢弃只读样式)。 其他文本框都是单行文本框,如下所示: editSearch = CreateWindowEx(WS_EX_CLIENTEDGE, L”EDIT”, NULL, WS_VISIBLE | WS_CHILD | ES_AUTOHSCROLL | WS_TABSTOP, someLeft, someTop, someWidth, someHeight, hWndMain, NULL, hInst, NULL); 这似乎与多线风格有关是原因。 但是在C#winform中,使用tab-stop创建多行编辑非常容易(它是文本框的默认行为,无论是多行)。 我试过用spy ++来查找窗口样式是否有任何线索。 但是,如果唯一的区别是“Accept Tab”属性,则2个文本框的窗口样式是不同的。 […]

列表视图控件中的项和子项

我想使用List-View控件在“网格”中显示LDAP搜索的结果。 我已经编写了一些测试代码来查看它是如何工作的,但它并没有像我想要的那样显示。 据我了解,每个Item相当于一个“行”(使用LVS_REPORT样式),而Subitem相当于一个“列”(例如,对于每个项目,我可以显示多个子项,每个子项在一​​个单独的列上同一行)。 这是我的测试代码,目前设置为创建四列,包含一个Item和四个Subitems(对应于四列)。 两个function:一个用于创建列,另一个用于插入项目。 int CreateColumns(HWND *hwndlistbox) { wchar_t *cnames[100]; LVCOLUMN lvc; int i; cnames[0] = L”column1″; cnames[1] = L”column2″; cnames[2] = L”column3″; cnames[3] = L”column4″; cnames[4] = NULL; lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; for (i = 0; cnames[i] != NULL; i++) { lvc.iSubItem = i; lvc.pszText = cnames[i]; lvc.cx […]