Tag: winapi

列出Windows计算机上安装的所有Web浏览器

是否有一个常用的方法/ api列出我的机器(和每个用户)上安装的所有Web浏览器(名称,可执行文件,默认是/否),以及如何找出哪个是默认的Web浏览器? 我看到了这个问题: 如何找到机器上安装的所有浏览器 在MSDN上: 如何使用Windows开始菜单注册Internet浏览器或电子邮件客户端,该菜单指出Web浏览器应在HKLM\SOFTWARE\Clients\StartMenuInternet (和HKCU )下注册自己 这真的是常见/正确的方法吗? (如果是的话,那里有任何可靠的实施吗?) 我的目标是创建一个下拉菜单,其中列出了安装在用户计算机上的所有Web浏览器(指示默认值),并允许用户使用其中一个外部Web浏览器浏览其HTML文件/ URL。

调用Windows安全对话框(在C#或VB.NET中)

我想知道如何以编程方式调用Windows安全对话框(在Windows工作站上按ctrl + alt + del 注意:我不想要任务管理器! )。 在XP工作站上,不要担心Win7或Vista 理想情况下使用C#中的快速示例(如果必须,还可以使用VB.NET) 我搜索了很多DLL,如msgina.dll ,我无法在任何地方找到它! 或者只是调用更改密码屏幕会很好!

将Windows消息发送到Windows服务

是否有任何工具可以向Windows服务发送(模仿)像’WM_ENDSESSION’这样的Windows消息? 要么 如何使用C#向进程发送Windows消息? (我只知道C#) 编辑:目的:基本上我必须调试Windows服务来修复仅在系统关闭时发生的错误。

如何在附加文本时阻止TextBox自动滚动?

我有一个带有垂直滚动条的多行TextBox,它可以记录实时进程中的数据。 目前,每当textBox.AppendText()添加新行时,TextBox都会滚动到底部,这样您就可以看到最后一个条目,这很棒。 但我有一个复选框来决定何时允许TextBox自动滚动。 反正有没有这样做? 注意: 我想使用TextBox,因为添加的文本有多行并由空格格式化,因此使用ListBox或ListView并不简单。 我试图通过textBox.Text += text添加一个新行,但TextBox总是滚动到顶部。 如果我们有一个解决方案,那么还有一个问题是当TextBox附加文本时,当用户使用滚动条查看TextBox中的其他位置时,如何防止TextBox自动滚动? private void OnTextLog(string text) { if (chkAutoScroll.Checked) { // This always auto scrolls to the bottom. txtLog.AppendText(Environment.NewLine); txtLog.AppendText(text); // This always auto scrolls to the top. //txtLog.Text += Environment.NewLine + text; } else { // I want to append the text without scrolls right here. […]

抛出Win32Exception

我最近编写了很多涉及与Win32 API互操作的代码,并开始想知道什么是处理由Windows API函数调用引起的本机(非托管)错误的最佳方法。 目前,对本机函数的调用如下所示: // NativeFunction returns true when successful and false when an error // occurred. When an error occurs, the MSDN docs usually tell you that the // error code can be discovered by calling GetLastError (as long as the // SetLastError flag has been set in the DllImport attribute). // Marshal.GetLastWin32Error is […]

如何全局检测点击(触摸输入)而不是鼠标点击?

我想创建一个在用户触摸屏幕时显示自己的应用。 它不适用于点击。 我在Windows 7/8中寻找触控手柄。 但是我看到每个触摸窗都必须在RegisterTouchWindow中注册 TL; DR 有没有办法让触摸点位置在窗口外(全局)?

如何在后台最大化窗口?

我需要在背景中最大化窗口,这意味着不激活(聚焦)它。 SetWindowPlacement函数不提供此..任何想法? WINDOWPLACEMENT wp = new WINDOWPLACEMENT(); GetWindowPlacement(hwnd, ref wp); wp.showCmd = 3; SetWindowPlacement(hwnd, ref wp);

Windows aero glass表单文本问题

我使用带有GlassForm的Windows窗体(使用Microsoft.WindowsAPICodePack.Shell;)。 我的问题,当我将表单更改为GlassForm我的文本框文本不

GetMouseMovePointsEx:(mp_in)问题中的Bounds / MOUSEMOVEPOINT

我正在尝试计算光标加速度/速度。 我在C#中阅读了Find鼠标的速度,并决定采用Hans的建议使用GetMouseMovePointsEx ( pinvoke.net , MSDN )。 我制作了一个演示程序来测试它(参见下面的完整代码),但它有一个很大的局限性。 一旦光标离开窗口,它将不会返回点。 实际上,如果执行不限于MainWindow中的点,则函数返回-1(win32Exception 1171,“传递给GetMouseMovePoints的点不在缓冲区中”)。 我怀疑这可能是因为我使用Mouse.GetPosition()来提供mp_in值。 这可以通过使用GetCursorPos来解决吗? 移动窗口或调整窗口大小会导致myBounds.Contains(currentPosition)为true时为false。 这可能是一个与我如何设定界限有关的愚蠢错误,但对我来说并不是很明显为什么会这样。 它也可能连接到Mouse.GetPosition() 。 不管是什么原因,我的比较都不匹配。 请帮忙? 它看起来像什么 MainWindow.xaml MainWindow.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Threading; using System.Windows.Interop; using System.Runtime.InteropServices; namespace MouseVelocity { public partial class MainWindow : Window { DispatcherTimer GetMousePointsNow; MOUSEMOVEPOINT[] mp_out = new MOUSEMOVEPOINT[64]; MOUSEMOVEPOINT LastMMP; […]

是否可以发送WM_COPY消息,复制除剪贴板以外的其他地方的文本?

这是方法定义: [DllImport(“user32.dll”)] public static extern int SendMessage(IntPtr hWnd, int msg, IntPtr lparam, IntPtr wparam); 这是对SendMessage的调用: //WM_COPY = 0x0301 SendMessage(handle, WM_COPY, IntPtr.Zero, IntPtr.Zero); 这是我检索数据的方式: string text = System.Windows.Forms.Clipboard.GetText(); 除了我不想将数据复制到剪贴板之外,我想做同样的事情。 是否可以将数据复制到内存中的其他部分? 如果是这样,怎么样?