Articles of winapi

SetFilePointer没有FILE_FLAG_NO_BUFFERING

考虑这个程序: #include <stdio.h> #include <windows.h> int main(int argc, char** argv) { if (argc != 2) return 1; HANDLE j = CreateFile("\\\\.\\F:", FILE_GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL); int k = SetFilePointer(j, atoi(argv[1]), NULL, FILE_BEGIN); printf("%d\n", k); } 我得到这些结果: > a 512 512 > a 513 -1 > a 1024 1024 所以我只能将文件指针移动到卷扇区大小的倍数。 这是FILE_FLAG_NO_BUFFERING标志所预期的行为。 但是我不使用那个标志,为什么我会得到这些结果呢?

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ MachineGuid是唯一的吗?

该页面说明如下: 在Windowsregistry中有一个名为MachineGUID的键,它具有在安装时由Windows创build的UUID,理论上应该是机器唯一的。 实际上情况并非如此,我经常在机器之间发现这个ID的重复。 我不明白为什么它不会是唯一的,我的意思是Windows使用一些弱algorithm来产生这个GUID或者什么?

为什么ShellExecute找不到文件?

从一个* nix的世界来说,我很困惑Windows的行为,可能是它的安全系统。 我只是试图在我的应用程序中执行一个外部程序。 我发现了WinAPI函数ShellExecute,它可以像预期的那样工作, 除非启动一些放在%windir%\ System32子目录中的程序。 执行ping.exe成功 ShellExecute(NULL, "open", "c:\\Windows\\System32\\ping.exe', NULL, NULL, SW_SHOW) ); // ^^^ OK, retcode == 42 java.exe的执行失败 ShellExecute(NULL, "open", "c:\\Windows\\System32\\java.exe', NULL, NULL, SW_SHOW) ); // ^^^ ERROR_FILE_NOT_FOUND, retcode == 2 这很奇怪,因为java.exe在System32中确实存在,对Users组具有读/执行权限,并且可以从cmd中调用。 C:\>dir /qc:\Windows\System32\java.exe Volume in drive C has no label. Volume Serial Number is 56E3-0868 Directory of c:\Windows\System32 11.01.2012 23:40 172 […]

WM_GETFONT与标准的flatstyle问题

我正在尝试获取其他应用程序中的button的字体。 当我尝试WM_GETFONT ,它返回0.这个我的代码: [DllImport("User32.DLL")] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); IntPtr fx = SendMessage(button1.Handle, 0x31, 0, 0); 我已经知道问题的原因,它由于FlatStyle属性 看到这个链接 http://www.siao2.com/2008/09/26/8965526.aspx 我怎么解决这个问题? 我在Windows 7下使用C#。

在Windows .rc文件/ dll中使用string型资源标识符

我们的代码库中有许多MFC扩展DLL,其中许多embedded了项目.rc文件(IDS _…,IDD _…,IDB _…等)中定义的Windows资源。 我们使用数字标识符来定义我们的资源,特别注意我们的资源ID不会在dll之间冲突,这需要一些pipe理来确保我们的开发人员不使用相同的编号。 我意识到stringtypes的资源标识符可能是一个简单的方法,这意味着我们可以为每个不同的dll中的每个资源定义唯一的标识符。 我的问题是,有没有这样做的技术问题,例如: MFC的DLL /资源链仍然会正常工作? Visual Studio资源编辑器仍然工作吗? 我在MS技术说明中没有发现任何东西,说这是一个问题 – 我只是想知道,如果人们有这方面的经验。

如何find鼠标button“点击”位置x和y?

我尝试了很多关于在C的窗口控制台中获取鼠标点击的x和y位置,但我找不到,所以我在这里发布。 我正在创build我自己的文本编辑器项目(为了好玩),我必须集成一个function,无论何时在控制台内单击,光标移动到它(单击x,y)我不想知道如何移动光标但我想知道如何获得点击位置 。 这个代码甚至可以接收所有的鼠标,键盘和鼠标事件,甚至鼠标点击: #include <windows.h> #include <stdio.h> HANDLE hStdin; DWORD fdwSaveOldMode; VOID ErrorExit(LPSTR); VOID KeyEventProc(KEY_EVENT_RECORD); VOID MouseEventProc(MOUSE_EVENT_RECORD); VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD); int main(VOID) { DWORD cNumRead, fdwMode, i; INPUT_RECORD irInBuf[128]; int counter=0; // Get the standard input handle. hStdin = GetStdHandle(STD_INPUT_HANDLE); if (hStdin == INVALID_HANDLE_VALUE) ErrorExit("GetStdHandle"); // Save the current input mode, to be restored on […]

如何创build不透明内容的完全透明的窗口?

我试过这个: #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_SIZE: case WM_MOVE: case WM_PAINT: { PAINTSTRUCT ps; BeginPaint(hwnd, &ps); EndPaint(hwnd, &ps); return 0; } case WM_CTLCOLORSTATIC: { HDC hdc = (HDC) wParam; SetBkMode (hdc, TRANSPARENT); return (LRESULT)(GetStockObject(NULL_BRUSH)); } default: […]

Win32 API窗口将不会打开

好的,所以我已经花时间学习了Win32 API来打开窗口,最终我想到的代码会起作用,但是不会。 我注册了窗口课,做了所有必要的事情,但是当我运行它的时候,没有任何事情发生……如果有人能指出我做错了什么,那将是一个很大的帮助。 #include <stdlib.h> #include <iostream> #include <Windows.h> #pragma comment (lib, "wsock32.lib") #define WNDCLASSNAME "wndclass" bool quit = false; LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hinstance, […]