Tag: winapi

我需要固定匿名代表吗?

我从C#应用程序调用CopyFileEx,并将匿名委托传递给LPPROGRESS_ROUTINE参数,以便获取有关文件复制进度的通知。 我的问题是,匿名代表是否需要固定以及为什么(或为什么不)。 此外,如果: CopyFileEx没有阻止。 如果我传入一个非匿名的代表。 谢谢!

如何发送键+ A + B键? (保持控制修改器“按下”)

当我记录这个序列时,它失败了。 我知道我可以使用Keyboard.SendKeys(控件,“A”,ModifierKeys.Control)发送Control + A,但是如何在按下一个字母之前发送一个包含控件并释放该字母的序列。 注意:我正在寻找的序列类似于用于注释掉Control + K + C行的默认Visual Studio快捷方式 这可能是我需要使用WinApi的东西吗?

WM_KEYDOWN:如何使用它?

我正试图通过PostMessage向一个应用程序发送一个关键笔划。 我使用太Spy ++试图理解如何发送消息,因为我不完全理解它的内部工作原理。 在这张照片中,第一个项目(选定项目)是由我自己制作的实际击键。 它周围有一个红色椭圆(下图)的代码是用以下代码制作的: WinApi.PostMessage(InsideLobbyHandle, WinApi.WM_KEYDOWN, (int)WinApi.VK_UP, 1); 我想它必须与最后一个PostMessage()参数有关,但我无法弄清楚它是如何工作的。 我可以在原始键击中看到ScanCode = 48,而在我的0中,fExtended是1,而我的是0.我怎么能让它看起来一样? 在http://msdn.microsoft.com/en-us/library/ms646280(VS.85).aspx我无法理解最后一个参数的工作原理。

为什么我的解决方案不适用于C#中的P / Invoke NotifyServiceStatusChange?

我正在尝试P / Invoke C#中的NotifyServiceStatusChange事件来检查服务何时停止。 我设法让它编译并运行没有任何错误,但现在, 当我停止服务时,它似乎不想通知它已死 。 任何想法为什么会这样? 您可以通过将此代码复制到空白控制台应用程序中来测试它; 只需确保将“我的服务名称”替换为您的服务名称(下面有两个此字符串实例)。 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { public delegate void StatusChanged(IntPtr parameter); public class SERVICE_NOTIFY : MarshalByRefObject { public uint dwVersion; public StatusChanged pfnNotifyCallback; public IntPtr pContext; public uint dwNotificationStatus; public SERVICE_STATUS_PROCESS […]

如何通过Printername和JobID暂停Win32_printJob

任务 当用户打印文档时,暂停弹出将出现然后填写表单单击输入表单将关闭并且作业已恢复。 我们有50台网络打印机 , 2000台客户机和一台打印服务器 。 每个客户有3或4台打印机 问题 如果用户使用网络打印机(CANON,HP)在本地打印文档(EX:PDF PRINTER,XPS DOCUMENT WRITER) (或) ,则打印作业立即停止。 我的尝试 当打印任何文件时,事件监听器正在观看并返回打印作业 。 在第一暂停方法有时工作,大部分时间不能正常工作。因为,它搜索printjob,但它没有已经打印。 在第二个暂停方法不起作用因为,事件侦听器返回Managementbaseobject但是如果要暂停打印作业需要ManagementObject 如何将ManageBaseObject转换为ManageObject PRINTJOB EVENT LISTENER CODE managementEvent = new ManagementEventWatcher(); managementEvent.Query = new EventQuery(“SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA ‘Win32_PrintJob'”); managementEvent.Scope = new ManagementScope(@”\root\cimv2″); managementEvent.EventArrived += new EventArrivedEventHandler(printJobArrived_EventArrived); managementEvent.Start(); 主要行动守则 private void printJobArrived_EventArrived(object sender, […]

如何从其他用户找到MyMusic Folder?

如何找到其他用户的MyMusic文件夹?

使用SendInput发送超出U + FFFF的unicode字符

我正在编写类似于Windows 8中的屏幕键盘。使用Win32的SendInput发送我需要的大多数字符都没有问题。 问题在于新的Windows 8表情符号。 它们使用Segoe UI Symbol字体从U + 1F600开始。 在Windows 8屏幕键盘上使用Spy ++,我得到所有表情符号字形的以下输出。 000C064A P WM_KEYDOWN nVirtKey:VK_PACKET cRepeat:1 ScanCode:00 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 000C064A P WM_CHAR chCharCode:’63’ (63) cRepeat:1 ScanCode:00 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 000C064A P WM_KEYUP nVirtKey:VK_PACKET cRepeat:1 ScanCode:00 fExtended:0 fAltDown:0 fRepeat:1 fUp:1 000C064A P WM_KEYDOWN nVirtKey:VK_PACKET cRepeat:1 ScanCode:00 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 000C064A P […]

从文件中提取特定图标图层,然后将其另存为具有透明度的.ico文件

正如问题的标题所示,我正在尝试从文件中提取特定的图标图层,然后将其保存为具有透明度的ico文件(如源图标所示)。 有许多与图标提取有关的问题,但这是我在使用SHDefExtractIcon函数时应用的以下代码所特有的 。 我遇到的问题是生成的.ico文件的颜色是错误的,它产生了一种半透明的可怕透明度,另一方面,生成的.png文件被完美保存。 这是生成的PNG文件: 这是生成的ICO文件: 这是Windows API的限制,还是我做错了什么? C#: [DllImport(“Shell32.dll”, SetLastError = false)] public static extern int SHDefExtractIcon(string iconFile, int iconIndex, uint flags, ref IntPtr hiconLarge, ref IntPtr hiconSmall, uint iconSize); IntPtr hiconLarge = default(IntPtr); SHDefExtractIcon(“C:\\file.exe”, 0, 0, hiconLarge, null, 256); // ToDO: Handle HRESULT. Icon ico = Icon.FromHandle(hiconLarge); Bitmap bmp = ico.ToBitmap(); // Save […]

如何强制执行我的应用程序的单个实例?

如何确保我的应用程序的单个实例,并在尝试打开第二个实例时将焦点设置为它? 我试过了: public partial class Form1 : Form { [DllImport(“USER32.DLL”, CharSet = CharSet.Unicode)] public static extern IntPtr FindWindow(String lpClassName, String lpWindowName); [DllImport(“USER32.DLL”)] public static extern Boolean SetForegroundWindow(IntPtr hWnd); private void Form1_Load(object sender, EventArgs e) { bool isRunning = Process.GetProcesses() .Where(p => p.MainWindowTitle.Contains(Text)) .Count() > 1; if (isRunning) { FocusWindow(Text); Application.Exit(); } } public static void […]

以管理员身份运行:requireAdministrator&ClickOnce +模拟系统时间

我的应用程序使用ClickOnce tehcnology。 今天我需要以管理员身份运行它。 我修改了清单文件 至 但VS无法编译项目: 错误35 ClickOnce不支持请求执行级别’requireAdministrator’。 我认为不可能立即使用它们。 不是吗? 我需要更改系统时间,我可以在应用程序级别执行此操作吗? 我可以模仿它,所以应用程序。 能做我想做的事。 我改变时间+2小时然后放回一秒钟。 我有几个dll,他们要求时间。