Tag: winapi

在WPF / C#中使用全局键盘钩子(WH_KEYBOARD_LL)

我从互联网上find的代码我自己缝合在一起WH_KEYBOARD_LL帮手类: 把下面的代码放到一些utils库中,让它成为YourUtils.cs : using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Windows.Input; namespace MYCOMPANYHERE.WPF.KeyboardHelper { public class KeyboardListener : IDisposable { private static IntPtr hookId = IntPtr.Zero; [MethodImpl(MethodImplOptions.NoInlining)] private IntPtr HookCallback( int nCode, IntPtr wParam, IntPtr lParam) { try { return HookCallbackInner(nCode, wParam, lParam); } catch { Console.WriteLine("There was some error somewhere…"); } return […]

如何从WPF应用程序使用FolderBrowserDialog

我试图从我的WPF应用程序使用FolderBrowserDialog – 没有什么奇特的。 我不太在乎它有Windows窗体的外观。 但是,当我打电话给ShowDialog,我想通过所有者窗口,这是一个IWin32Window。 我如何从我的WPF控件得到这个? 其实,这是否重要? 如果我运行这个代码,并使用ShowDialog重载没有参数,它工作正常。 在什么情况下我需要通过所有者窗口? 谢谢, 克雷格

有没有办法find所有由dll暴露的function

我一直在寻找一种方法来获取映射到一个DLL中的函数名称的所有string。 我的意思是所有可以调用GetProcAddress的string。 如果你做一个DLL的hex转储的符号(string)在那里,但我想那里必须我一个系统调用来获取这些名称。

学习低级别的WinAPI编程是否有意义?

是否有意义,让所有的C#pipe理的幸福,回到Petzold的编程Windows,并尝试产生的代码W /纯WinAPI? 什么可以从中学习? 这不是太过时了吗?

primefaces文件重命名(与覆盖)可能在Windows上?

在POSIX系统上,重命名(2)提供了一个primefaces重命名操作,包括覆盖目标文件,如果它存在并且权限允许的话。 有什么办法可以在Windows上获得相同的语义? 我知道Vista和Server 2008上的MoveFileTransacted(),但我需要这个来支持Win2k。 这里的关键词是primefaces的 …解决scheme不能以任何方式使操作失败,使操作处于不一致的状态。 我见过很多人说win32上不可能,但我问你,是不是? 请尽可能提供可靠的引文。

我怎样才能不使用主机环境的站点包文件夹使用pywin32与virtualenv?

我正在Python 2.6下使用PyInstaller ,由于MS已经使用了他们的清单nonense,现在影响Python,因为它现在是MSVC8编译,所以这只是部分支持。 问题是清单embedded支持依赖pywin32扩展为了构build这是一个痛苦,因为没有包括主机的site-packages文件夹,当我创buildvirtualenv (有点在构build环境中击败点)我找不到方法安装所需的扩展,以便PyInstaller可以访问它们。 有没有人find解决这个问题?

错误C2275:非法使用这种types作为expression式

从昨天开始,我一直在为我的C项目面临一个编译错误。 这个项目本身就是创build一个服务来完成一些任务。 我自昨天以来没有发生什么变化,但今天早上,我的代码不能再编译了。 这里是我有的错误: c:\path\main.c(56): error C2275: 'SERVICE_TABLE_ENTRY' : illegal use of this type as an expression c:\program files\microsoft sdks\windows\v7.0a\include\winsvc.h(773) : see declaration of 'SERVICE_TABLE_ENTRY' c:\path\main.c(56): error C2146: syntax error : missing ';' before identifier 'DispatchTable' c:\path\main.c(56): error C2065: 'DispatchTable' : undeclared identifier c:\path\main.c(56): error C2059: syntax error : ']' c:\path\main.c(57): error C2065: 'DispatchTable' : […]

如何通过拖动扩展窗口框架来移动WPF窗口?

在Windows资源pipe理器和Internet Explorer等应用程序中,可以抓取标题栏下面的扩展框架区域并拖动窗口。 对于WinForms应用程序,表单和控件尽可能接近本机Win32 API; 我们可以简单地重写WndProc()处理程序,处理WM_NCHITTEST窗口消息,并诱使系统认为点击框架区域是通过返回HTCAPTION实际上是标题栏上的HTCAPTION 。 我已经在我自己的WinForms应用程序中做到了这一点,以达到愉快的效果。 在WPF中,我还可以实现一个类似的WndProc()方法,并将其挂接到我的WPF窗口的句柄,同时将窗口框架延伸到客户区,如下所示: // In MainWindow // For use with window frame extensions private IntPtr hwnd; private HwndSource hsource; private void Window_SourceInitialized(object sender, EventArgs e) { try { if ((hwnd = new WindowInteropHelper(this).Handle) == IntPtr.Zero) { throw new InvalidOperationException("Could not get window handle for the main window."); } hsource = […]

你如何检查目录是否存在于Windows上的C?

题 在Windows C应用程序中,我想validation传递给函数的参数,以确保指定的path存在。* 你如何检查目录是否存在于Windows上的C? *我知道你可以进入竞争状态,在你检查存在的时间和你使用的path不再存在的时间之间,但我可以处理。 额外的背景 明确知道某个目录是否存在可能会在权限进入时变得棘手。 有可能在尝试确定目录是否存在时,该进程没有访问目录或父目录的权限。 这对我的需求是可以的 。 如果目录不存在或者我无法访问它们,那么在我的应用程序中都将被视为无效的path故障,所以我不需要区分。 (虚拟)奖励积分,如果您的解决scheme提供了这种区别。 C语言,C运行时库或Win32 API的任何解决scheme都很好,但理想情况下,我想坚持通常加载的库(例如kernel32,user32等),并避免涉及加载非标准库的解决scheme(如Shlwapi.dll中的PathFileExists )。 如果您的解决scheme是跨平台的话,(虚拟)奖励点也是如此。 有关 我们如何检查一个文件是否存在或不使用Win32程序?

为什么睡眠(500)的成本超过500毫秒?

我在我的代码中使用了Sleep(500) ,并使用getTickCount()来testing计时。 我发现它的成本大约是515ms,超过了500个。有人知道这是为什么吗?