Articles of winapi

任何人都可以破译为什么这两个转换为无符号long long给出了不同的结果?

LARGE_INTEGER lpPerformanceCount, lpFrequency; QueryPerformanceCounter(&lpPerformanceCount); QueryPerformanceFrequency(&lpFrequency); (Count.QuadPart很长,显示CPU数量) (Freq.QuadPart是Count的一个很长的显示频率一秒钟) 试图实时打印微秒。 稳定的输出: printf("%llu\n", ((long double)lpPerformanceCount.QuadPart/ lpFrequency.QuadPart) * 1000000); 不稳定的输出:(即使乍一看,结果前后颠倒) printf("%llu\n", 1000000 * (lpPerformanceCount.QuadPart / lpFrequency.QuadPart) + (lpPerformanceCount.QuadPart % lpFrequency.QuadPart)); 编辑:printf需要进一步(无符号long long)转换在其input,原来的代码有一个函数的返回值完成。

在处理TB_GETBUTTONTEXT时,谁负责放置空终止符?

TB_GETBUTTONTEXT的文档说处理程序必须返回字符数,并且可选地(如果lParam不为空)将string复制到提供的缓冲区中。 需要注意的是,长度不包括终止字符。 我看到以下问题。 说处理程序存储预先计算的string(所以它的长度不会改变)。 首先,调用者将lParam设置为null的消息发送到查找字符数 – 处理程序返回没有终止null的字符数。 然后调用者分配内存并再次发送消息 – 这次传递的缓冲区地址为lParam 。 处理程序应该复制终止空吗? 我的意思是,如果第一次处理程序返回N ,并且调用方为N字符分配了空间,并且处理程序追加了终止空值,则会发生缓冲区溢出。 但是,如果调用者确实希望string被终止并为N+1字符分配空间,并且处理程序不会追加空终止符,则处理程序将拥有一个非空终止的string,并且可能会再次发生缓冲区溢出来电者不够小心)。 那么处理程序应该做什么? 是否应该复制空终止符?

Windows通知更改周期性时间调整

我可以监视系统时间调整的更改(通过SetSystemTimeAdjustment()更改)吗? 我需要监视这些变化以获得高精度的实时频谱图视图。 注意: 我知道WM_TIMECHANGE是每当系统时间改变时发送的。 这不是我要求的。

Windows API和SendMessage()

int x = 5; int y = 10; y = y << 16; int coord = x | y; NativeMethods.SendMessage(hwnd, WM_LBUTTONDOWN, new IntPtr(0), new IntPtr(coord)); NativeMethods.SendMessage(hwnd, WM_LBUTTONUP, new IntPtr(0), new IntPtr(coord)); 使用上面的代码(ref:MSDN),我可以在外部应用程序的datagridview中select一行。 我想知道我可以发送一个CTRL-A和CTRL-C到同一个datagridview。 仍然试图连接为什么x和yvariables初始化为5,10,为什么y左移了16,然后| 与x。

是否可以避免对话框中的静态或全局variables

如果在对话函数中需要某种状态,看起来你需要某种静态variables。 例如,GetOpenFileName的挂钩过程在其WM_INITDIALOG调用中提供了对话框函数的OPENFILENAME结构的地址,而不是任何后续的调用,并且OPENFILENAME结构包含lCustData的位置,该位置可用于在对话过程和GetOpenFileName调用者。 如果对话框函数需要这些状态中的任何一个,似乎唯一的select是静态或全局variables。

调用Marshal.PtrToStructure时发生AccessViolationException

我得到一个AccessViolationExcpetion通过调用Marshal.PtrToStructure(intPtr,typeof(Servent))。 任何想法我做错了什么? 我在x64上试过这个。 IntPtr intPtr = NativeMethods.GetServByName(name, "tcp"); if (intPtr != IntPtr.Zero) { Servent servent = (Servent)Marshal.PtrToStructure(intPtr, typeof(Servent)); result = System.Convert.ToInt32(IPAddress.NetworkToHostOrder(servent.s_port)); } else { throw CreateWSAException(); } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] internal struct Servent { public string s_name; public IntPtr s_aliases; public short s_port; public string s_proto; }

如何在c / c ++中实现asynchronous写入?

WriteFile( tmp_pipe, &Time, sizeof(double), &dwWritten, NULL ); 以上是同步的,如果tmp_pipe缓冲区用完了,就会在那里等待。 如何立即完成上面的结果,如果缓冲区已满,可能只是忽略数据?

如何播放video?

我不是C ++程序员,所以我有问题。 简单的问题,我想。 我需要玩电影,可以只有例如.avi(我可以转换)。 静态宽度,静态高度,没有button,没有循环。 我会用PHP写一些类似的东西 exec('window.exe movie23.avi'); 并出现窗口,播放video,窗口closures。 我依靠代码或良好的联系。 最好的祝福

如何显示网页

我想在我的程序中显示网页。 我使用Dev-C ++,而且我是新手。 我怎么能做到这一点? 最好的祝福

如何确保应用程序在Windows启动后始终同时启动?

换句话说,Windows启动,我的应用程序xyz.exe,启动后5分钟刚刚启动。 这可以保证,在10-15秒的误差范围内?