草庐IT

c++ - SetWindowPos() 跨进程 DPI 感知

我正在创建一个程序,它使用SetWindowPos()从另一个进程移动/调整窗口大小。我自己的程序是PROCESS_PER_MONITOR_DPI_AWARE。其他程序可以是PROCESS_DPI_UNAWARE、PROCESS_SYSTEM_DPI_AWARE或PROCESS_PER_MONITOR_DPI_AWARE中的任何内容。因为我自己的程序是PROCESS_PER_MONITOR_DPI_AWARE,所以我传递给SetWindowPos()的坐标是物理坐标。我现在要做的是将客户区的大小调整到逻辑坐标中的特定大小。我尝试做的是获取放置窗口的显示器的DPI作为screenDPI。

c# - 以编程方式阻止 C#/Windows 中进程与特定主机之间的所有连接

我正在尝试追踪我们使用的第三方连接器库中的一些故障转移问题。目前我正在启动和停止远程服务以模拟故障,这可行但非常不切实际。有没有办法以编程方式阻止进程和给定主机之间的所有连接?编辑:以及阻止我想删除任何现有的连接 最佳答案 我认为您可以与Windows防火墙交互以实现您想要的(以编程方式阻止进程与给定主机之间的所有连接),请查看WindowsFirewallInterfaces. 关于c#-以编程方式阻止C#/Windows中进程与特定主机之间的所有连接,我们在StackOverflow

.net - 在 Windows Mobile 上编程 ActiveSync

我正在开发一个管理联系人信息的桌面应用程序,我希望能够将其与WindowsMobile设备上的联系人列表同步。我需要了解哪些namespace/API才能执行此操作?我更喜欢.NETcompactframework中的东西,但我也可以做Win32。我正在寻找一种完全独立的方法,即不依赖于Outlook等单独的应用程序。谢谢 最佳答案 如果您可以使用最新的紧凑型框架,那么您可以使用WindowsMobileClassLibrary.如果您必须使用旧版本的框架或想要支持旧硬件,您可以访问nativeActiveSyncAPI与互操作。所

c# - 如何从 WinForms 应用程序控制新进程窗口的大小和位置?

我的WinForms应用程序使用Process.Start()在其native应用程序中打开文件。我想将屏幕分成两半,在一半上显示我的WinForms应用程序,在另一半上显示新进程。我知道我可以使用Process.MainWindowHandle获取窗口句柄,但我如何设置它的大小和位置?我想我必须使用某种WindowsAPI,但使用哪一种以及如何使用?由于这并不是真正“在我的驾驶室”,我不确定我是否(以及如何)需要在64位Windows上使用不同的API。 最佳答案 有问题的WindowsAPI方法是SetWindowPos。您可以

windows - 如何在Windows中找到特定线程的入口点?

我正在尝试找出如何在Windows中找到特定线程的入口点。我知道有多种方法可以获取进程的入口点,但不知道线程的入口点。我研究了一些可能能够访问它的不同结构/方法(TIB、PEB和GetThreadContext),但它他们似乎没有。我还检查了CREATE_THREAD_DEBUG_INFO信息结构——它可以访问启动例程——但似乎填充它的唯一方法是主动调试进程并调用WaitForDebugEvent。有什么想法吗?谢谢! 最佳答案 将NtQueryInformationThread与ThreadQuerySetWin32StartAd

c - 跨进程使用 Mutex

操作系统:Windows语言:C/C++设计要求跨进程及其子进程使用互斥变量。如果我在一个进程中创建互斥锁,我必须在另一个进程中打开互斥锁以检查关键部分的可用性。要打开互斥量,我需要知道在父进程中创建的互斥量的名称。假设,如果我将互斥量保留为我的应用程序名称。我可以知道互斥量的名称,因为它是固定的。但是,如果我并行加载我的应用程序的第二个实例,就会出现困惑。以下是更好的主意吗?我有一个想法,将父进程中的互斥量命名为进程ID。所以现在我需要从子进程/大子进程中获取父进程ID以打开互斥锁。我想没有直接的方法可以从大子进程中获取父进程ID。所以我必须在每个创建进程api中传递进程ID(在lp

c# - 检测线程数组的完成

我创建了一个线程数组并启动了所有线程。如何知道所有线程是否都完成了工作。我不想使用thread.wait或thread.join。 最佳答案 如果您使用的是.NET4,则可以使用TaskParallelLibrary和ContinueWhenAll方法。您必须修改线程以表示为Task的。任务比线程更容易处理。通常您不必担心较低级别的事情,因为您现在不得不做这些事情,例如安排时间或等待事情完成。 关于c#-检测线程数组的完成,我们在StackOverflow上找到一个类似的问题:

c# - Task.Delay 是否启动一个新线程?

下面的代码应该(至少在我看来)创建100个Tasks,它们都在并行等待(这就是并发的意义,对吧:D?)并且几乎同时完成.我想对于每个Task.Delay,都会在内部创建一个Timer对象。publicstaticasyncTaskMainAsync(){vartasks=newList();for(vari=0;ifunc=async()=>{awaitTask.Delay(1000);Console.WriteLine("Instant");};tasks.Add(func());}awaitTask.WhenAll(tasks);}publicstaticvoidMain(stri

c# - 在特定线程上调用委托(delegate) C#

有没有办法让委托(delegate)在特定线程上运行?假设我有:CustomDelegatedel=someObject.someFunction;ThreaddedicatedThread=ThreadList[x];我能否拥有一致的后台长时间运行线程并在需要时调用我自己的委托(delegate)?每次都必须是同一个线程。[编辑]我希望它在专用线程上的原因是时间是我打算在其上运行委托(delegate)并在y毫秒后挂起线程,并在我运行另一个线程时恢复线程委托(delegate)给它。我看这是不可能的。我将有一个委托(delegate)队列,让线程的主要功能从中读取并运行。为了用一个具

c# - Task.WhenAll() - 它会创建一个新线程吗?

根据MSDN:Createsataskthatwillcompletewhenallofthesuppliedtaskshavecompleted.当调用Task.WhenAll()时,它会创建一个任务,但这是否一定意味着它会创建一个新线程来执行该任务?例如,下面这个控制台应用程序中创建了多少个线程?classProgram{staticvoidMain(string[]args){RunAsync();Console.ReadKey();}publicstaticasyncTaskRunAsync(){Stopwatchsw=newStopwatch();sw.Start();Tas