Tag: winapi

我怎样才能得到Windows最后一次重启的原因

我想知道什么是Windows API函数(如果有的话)提供有关最后一个Windows重新启动源的信息。 有三个主要可能的原因: 电脑在蓝色屏幕上坠毁 用户或程序关机/重新启动计算机 失去了力量 更多的细节我可以变得更好。 不过,我需要知道至less从主要的原因是什么。 我需要支持Windows Vista和Windows 7。 回答: 似乎没有直接的API来获取这些信息。 相反,我们必须收获Windows事件日志。 系统重新启动信息位于事件查看器/ Windows日志/系统中。 以下是活动ID提供的各种信息: 6005:Windows启动 6006:Windows关机(正确) 6008:Windows关机(意外) 我还没有得到功率损失和系统崩溃之间的差异,但这是一个好的开始。

在浏览器BHO中添加浏览器操作button

所以。 我正在IE浏览器中工作,我想添加一个浏览器这样的操作 : 在Internet Explorer中,它会看起来像 我find的唯一教程和文档是关于创build工具栏项目。 没有提到这个选项。 我知道这是可能的,因为crossrider让你做这个确切的事情。 我只是不知道如何。 我找不到任何关于如何在BHO中实现这个function的文档。 任何指针都非常受欢迎。 我用C#把它标记为C#解决scheme可能会更简单,但是C ++解决scheme或其他解决scheme也是非常受欢迎的。

用C ++ Win32创build一个透明的窗口

我创build的应该是一个非常简单的Win32 C ++应用程序,仅用于显示半透明的PNG。 该窗口不应该有任何铬,所有的不透明度应该在PNG本身进行控制。 我的问题是,当窗口下的内容改变时,窗口不会重新绘制,所以当应用程序最初启动时,PNG的透明区域与“窗口”下的内容“卡住”。 这里是我设置新窗口的那一行: hWnd = CreateWindowEx(WS_EX_TOPMOST, szWindowClass, szTitle, WS_POPUP, 0, height/2 – 20, 40, 102, NULL, NULL, hInstance, 0); 对于RegisterClassEx的调用,我有这样的背景设置: wcex.hbrBackground = (HBRUSH)0; 这是我的WM_PAINT消息处理程序: case WM_PAINT: { hdc = BeginPaint(hWnd, &ps); Gdiplus::Graphics graphics(hdc); graphics.DrawImage(*m_pBitmap, 0, 0); EndPaint(hWnd, &ps); break; } 有一件事要注意的是,应用程序总是停靠在屏幕的左侧,不移动。 但是,当用户打开,closures或移动窗口时,应用程序下面的内容可能会改变。 应用程序首次启动时,看起来很完美。 透明(和simi透明)的PNG部分显示完美。 但是,当应用程序下面的背景发生变化时,背景不会更新,只是应用程序首次启动时保持不变。 实际上,WM_PAINT(或WM_ERASEBKGND在后台更改时不会被调用)。 我已经玩了很长一段时间,已经接近100%的权利,但不是那样。 例如,我试图设置背景(HBRUSH)NULL_BRUSH,我试着处理WM_ERASEBKGND。 当它下面的内容改变时,可以做些什么来重新绘制窗口?

我可以不用Visual Studio下载Visual C ++命令行编译器吗?

根据标题。 我不想下载整个Visual C ++安装程序,只需要“cl.exe”和在Windows上编译和链接C ++程序所需的其他程序。

在Windows中查找未公开的API

我很好奇在Windows中如何find未公开的API。 我知道使用它们所涉及的风险,但是这个问题集中在find它们,而不是是否使用它们。

32位和64位代码的DWORD有多大?

在Visual C ++中,一个DWORD只是一个无符号长整数,与机器,平台和SDK相关。 但是,由于DWORD是一个双字(即2 * 16),在64位体系结构上还是32位的DWORD?

malloc()与HeapAlloc()

malloc()和HeapAlloc()有什么区别? 据我所知malloc从堆分配内存,就像HeapAlloc,对不对? 那么区别是什么呢? 谢谢!

跳过窗口被捕获

我创build了一个有两个窗口的AIR应用程序。 第一个是主窗口(spark windowed application),第二个是组件(spark window)。 我正在使用Java来捕获Flex-Java Bridge Flerry的桌面屏幕。 这里是捕捉屏幕的代码是: HDC hdcWindow = User32.INSTANCE.GetDC(hWnd); HDC hdcMemDC = GDI32.INSTANCE.CreateCompatibleDC(hdcWindow); RECT bounds = new RECT(); User32Extra.INSTANCE.GetClientRect(hWnd, bounds); int width = bounds.right; int height = bounds.bottom ; HBITMAP hBitmap = GDI32.INSTANCE.CreateCompatibleBitmap(hdcWindow, width, height); HANDLE hOld = GDI32.INSTANCE.SelectObject(hdcMemDC, hBitmap); GDI32Extra.INSTANCE.BitBlt(hdcMemDC, 0, 0, width, height, hdcWindow, 0, 0, WinGDIExtra.SRCCOPY); 我不希望主要的弹性窗口被捕获。 它应该跳过(透明)被捕获。 […]

我如何正确使用JNA来映射`MagImageScalingCallback`?

我在我的Java项目中使用了jna.jar,jna-3.2.5.jar和jna-3.3.0-platform.jar。 这是我想复制的Winapi函数。 BOOL WINAPI MagImageScalingCallback( _In_ HWND hwnd, _In_ void *srcdata, _In_ MAGIMAGEHEADER srcheader, _Out_ void *destdata, _In_ MAGIMAGEHEADER destheader, _In_ RECT unclipped, _In_ RECT clipped, _In_ HRGN dirty ); 这是我的Java代码 public interface MagImageScalingCallback extends StdCallLibrary.StdCallCallback{ public boolean MagImageScalingCallback(HWND hwnd, Pointer srcdata, MAGIMAGEHEADER.ByValue srcheader, Pointer destdata, MAGIMAGEHEADER.ByValue destheader, RectByValue source, RectByValue clipped, HRGN dirty); } […]

在Delphi中做非闪烁,分段graphics更新的最佳方法?

我想我可以把它扔在那里,只是问:我已经看到了delphi的控制,在graphics效果方面是完美无缺的。 含义:不闪烁,分段更新(只重绘标记为脏的控件部分)和平滑滚动。 我已经编写了很多年的graphics控件,所以我知道双缓冲,dibs,bitblts和所有的“常见”的东西(我总是使用dibs如果可能绘制一切,但有一个开销)。 也知道InvalidateRect和检查TCanvas.ClipRect为需要更新的实际矩形。 尽pipe所有这些典型的解决scheme,我发现很难创build相同的质量组件,如说 – Developer Express或Razed组件。 如果graphics平滑,则可以下注滚动条(本地)闪烁,如果滚动条和框架平滑,则可以在滚动期间发誓背景闪烁。 有没有一个标准的代码设置来处理这个? 一种确保整个控制顺利重新绘制的最佳实践 – 包括控制的非客户区域? 例如,这里是一个“裸骨”控制,它为分段更新提供高度(只重绘需要的)。 如果您在窗体上创build它,请尝试将窗口移动到窗体上,并用颜色replace部件(请参阅绘画方法)。 有没有人有类似的基类,可以处理非客户区重绘没有闪烁? type TMyControl = Class(TCustomControl) private (* TWinControl: Erase background prior to client-area paint *) procedure WMEraseBkgnd(var Message: TWmEraseBkgnd);message WM_ERASEBKGND; Protected (* TCustomControl: Overrides client-area paint mechanism *) Procedure Paint;Override; (* TWinControl: Adjust Win32 parameters for CreateWindow *) procedure CreateParams(var […]