Articles of .net

.NET中的窗口句柄可以改变它的值吗?

在.NET进程的生命周期中,执行System.Windows.Forms.Form的句柄,可以说Application.Run(form)使用的主表单实际上改变了它的值,也就是说,如果使用不同的进程,例如IntPtr handle = User32.FindWindow(null, "Name") ,是否有一种情况下,该处理可能会失效.NET运行时? 编辑 我需要知道句柄,因为我想为IPC使用SendMessage和WM_COPYDATA等。

我怎样才能找出谁在Windows中使用.NET创build一个文件?

我需要找出谁使用.NET创build了一个文件 我已经尝试了以下内容: string FileLocation = @"C:\test.txt"; FileInfo droppedFile = new FileInfo(FileLocation); FileSecurity fileSecurity = droppedFile.GetAccessControl(); IdentityReference identityReference = fileSecurity.GetOwner(typeof(NTAccount)); string userName = identityReference.Value; Console.WriteLine(userName); 所有这些返回是“BUILTIN \ Administrators” 我在这里做错了什么? 因为当我在资源pipe理器中查看C:\,所有者显示正确的用户名,当我执行上面的代码时,它返回“BUILTIN \ Administrators” 这甚至不是一个域和用户名,我认为这是一个安全组。 任何帮助赞赏。

在Windows 8上使用简单的Windows窗体/ WPF应用程序是否适用于平板电脑?

我正在开发一个需要在Windows 7,Windows 8和Windows 8 Tablet上工作的C#.NET业务应用程序。 “简单”的Windows窗体应用程序在Windows 8桌面和平板电脑上都可以工作吗? 有没有Windows 8平板电脑模拟器? 有没有其他的select?

Windows安全性自定义loginvalidation

我正在创build一个Xaml / C#应用程序,我希望它popup一个login提示。 我想知道是否有可能使用CredUIPromptForWindowsCredentials。 显示Windows安全对话框 获取input的用户名和密码 执行自定义validation 如果validation成功 – >继续应用程序 否则如果validation失败 – > – 用户input无效的用户名或密码 我已经看了Windows安全login窗体? 和http://www.pinvoke.net/default.aspx/credui/creduipromptforwindowscredentials.html?diff=y但他们不解释如何处理validation。 我真的很喜欢一个小例子,如果用户input用户名=“Bo”和密码=“123”,则显示错误信息并允许用户再次尝试。 该应用程序将被安装在多台电脑上。 或者这是不可能的? 更新 受此问题的答案在Windows Vista / 7的C#中显示身份validation对话框的启发 我修改了代码以按预期方式工作。 请注意,validation部分仅用于概念validation。 WindowsSecurityDialog.cs public class WindowsSecurityDialog { public string CaptionText { get; set; } public string MessageText { get; set; } [DllImport("ole32.dll")] public static extern void CoTaskMemFree(IntPtr ptr); [StructLayout(LayoutKind.Sequential, CharSet […]

实施Explorer ContextMenu并将多个文件传递给一个程序实例

情况 我有一个通过CLI接受多个文件的第三方GUI应用程序,例如: MyProgram.exe "file1" "file2" 然后,所有文件一次加载到应用程序的同一个实例中。 为了优化我的时间,我想通过右键单击Windows资源pipe理器中的某些文件来加载多个文件(例如: select5个文件>右键单击>select“在MyProgram中打开”命令 ) 我知道如何创build所需的registry项,以在特定文件types的上下文菜单中添加该命令,这不是问题。 问题 这第三方程序没有任何驱动程序,shell扩展或方法,可以从上下文菜单中捕获多个文件,所以而不是如果我从资源pipe理器中select2个文件,每个文件打开一个单独的程序实例,我没有开发驱动程序的想法,所以一个驱动程序不是我要找的。 焦点 我愿意提出build议,也许这不是有效的方法,但似乎是最简单的方法: 我的想法是开发一个迷你的CLI应用程序来捕获这些多个文件(可能基于Windows消息或在没有活动,我不知道这就是为什么我问),将这些文件/参数写入一个文本文件,然后join所有参数在一行中调用我的第三方程序与这些参数一次加载在这个程序的单个实例的所有文件。 换句话说,只需一个简单的加载程序就可以在select多个文件的同时从上下文菜单中使用它来在第三方应用程序中同时打开所有文件。 题 首先,我想知道是否存在一个已知的术语来命名这个应用程序的东西,它能够在同一个实例中加载多个文件,从资源pipe理器中select文件,然后select上下文菜单。 我想研究这个术语。 在VB.NET / C#控制台应用程序中,哪个可能是最有效的方法来完成这个任务? (不是司机) 如何开始发展呢? 来自已知页面的任何现有的源代码示例,如codeproject …?

如何在MS Windows上加载GTK Sharp主题

我正在MS Windows上使用Xamarin Studio 5.4编写一个GTK Sharp(v2.12)应用程序。 安装的Mono版本是3.2.3(但我使用.Net工具链进行编译,因为Xamarin不允许我使用Mono工具链进行编译)。 这种情况是,当我从Xamarin工作室运行应用程序或使用单声道,那么我有一个相对漂亮的外观和感觉,但是当我运行应用程序使用.Net(双击可执行文件),那么外观和感觉是可怕。 我试图欺骗应用程序来加载一个体面的主题…但是,当我从.Net(但是当我使用单声道然后很容易看到更改)它什么都不做。 这是我试过的代码,但不起作用(我有一个GTK主题rc文件的本地副本): // It works on Mono, but not on .Net Gtk.Rc.Parse("Resources/GTK/windows-theme.gtkrc"); 我也试着做: // This does not work at all (on MS Windows) Gtk.Settings.Default.ThemeName = "MS-Windows"; 但即使使用单声道引擎,这也不会改变任何事情。 这是应用程序看起来如何使用单声道: 以及它如何运行在.net引擎下: 感谢您的关注 :) 。

我如何移动粘贴/贴紧wpf窗口

当我移动一个“主”窗口时,我想移动两个或更多的粘性窗口 我想要做这样的事情 private void MainWindow_PreviewMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { this.DragMove(); foreach (var window in App.Current.Windows.OfType<Window>()) { window.Move(); // move it } } } 我想用这个解决scheme来捕捉窗口 用于WPF的捕捉/粘滞/磁性窗口http://programminghacks.net/2009/10/19/download-snapping-sticky-magnetic-windows-for-wpf/ 但是我怎样才能移动它? 编辑 在Gustavo Cavalcanti的回复之后,我提了几个想法。 这是我的问题的粗略解决scheme。 using System.Windows; using System.Windows.Data; namespace DragMoveForms { /// <summary> /// Interaction logic for Window1.xaml /// </summary> public partial class Window1 […]

从一个Windows服务打开一个对话窗口

我已经在C#中创build了一个Windows服务应用程序,以特定的时间间隔popup一个对话窗口。 在Visual Studio中debugging时,它运行良好。 然后我创build了一个安装设置。 但是安装完服务之后不会popup对话窗口。 这将是什么原因,我该如何解决?

使用C#获取连接到命名pipe道服务器的客户端的进程ID

我不确定我是否没有看到它,或者是什么? 我需要知道从NamedPipeServerStream实例通过命名pipe道连接到我的服务器的客户端的进程ID。 这样可能吗? 同时我想出了这个function: [DllImport("kernel32.dll", SetLastError = true)] internal static extern bool GetNamedPipeClientProcessId(IntPtr Pipe, out UInt32 ClientProcessId); public static UInt32 getNamedPipeClientProcID(NamedPipeServerStream pipeServer) { //RETURN: // = Client process ID that connected via the named pipe to this server, or // = 0 if error UInt32 nProcID = 0; try { IntPtr hPipe = pipeServer.SafePipeHandle.DangerousGetHandle(); GetNamedPipeClientProcessId(hPipe, […]

检查Windows窗体滚动条是否一直向下滚动?

我有一个丰富的文本框作为日志。 当一条新消息被追加时,日志会自动向下滚动,这很好。 唯一的问题是当用户想要查看日志中的某些内容时, 如果添加新消息,则该框会自动向下滚动并阻止用户看到任何内容。 我想能够检查富文本框是否滚动一直下来,如果它不是向下滚动。 目前我可以在虚拟文本空间中获取滚动位置(使用EM_GETSCROLLPOS的SendMessage)。 我也可以通过GetScrollBarInfo来获取滚动条信息。 但是,我怎么知道虚拟文本空间的底部是什么? 谢谢!