【问题标题】:Open Notepad to specific location on the screen, and to desired size?打开记事本到屏幕上的特定位置,并打开所需的大小?
【发布时间】:2011-01-18 14:32:25
【问题描述】:

我需要将 nNtepad 打开到特定大小和屏幕上的特定位置。

如何从 C# 中做到这一点?

我将不胜感激代码示例。

【问题讨论】:

标签: c# winapi resize


【解决方案1】:

您可以调用 MoveWindow。像这样:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

class Program {
    static void Main(string[] args) {
        var prc = Process.Start("notepad.exe");
        prc.WaitForInputIdle();
        bool ok = MoveWindow(prc.MainWindowHandle, 0, 0, 300, 200, false);
        if (!ok) throw new System.ComponentModel.Win32Exception();
    }
    [DllImport("user32.dll", SetLastError = true)]
    private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int width, int height, bool repaint);
}

【讨论】:

  • 我有一个问题,这个课程非常适合在所需位置开始应用。但是当应用程序已经运行并且不需要启动应用程序时,我现在需要进行更改。最后,我不使用它来处理记事本,我通知记事本之类的例子。我要控制的应用程序,何时更新,将exe的名称更改为,Aplication1.4,何时再次更新Aplication1.5等。列出的进程使用该名称,无论软件版本如何,如何搜索进程?如果可以修改课程以完成我现在评论的两件事,我会很高兴,
  • 我的水晶球无法对评论进行逆向工程,它遭受了六次语法错误异常,有点记录。不知何故,它似​​乎与原始问题或记事本没有太大关系。它推荐了一个精心设计的新问题。
【解决方案2】:

要打开它,您可以使用 Process.Start 或 ShellExecute API 调用,将其应用程序窗口设置为特定大小和位置,我将调用 API SetWindowsPos。

【讨论】:

  • 我重新表述了这个问题,因为我知道如何打开记事本,:) 我真正需要的是移动记事本的位置并将窗口大小调整为所需的值。最好的问候
【解决方案3】:

我会启动记事本,然后将其移动到所需位置。您使用 FindWindow(非托管代码)找到记事本的硬件,然后向窗口发送一些移动/调整大小事件。您将需要使用一些非托管代码,可能的 windows 挂钩也许您可以在这里找到代码 http://pinvoke.net/

【讨论】:

    【解决方案4】:

    Take a look here 从您的应用程序访问命令行。代码如下所示:

    System.Diagnostics.Process.Start("Notepad");
    

    我不相信您有能力在屏幕上准确定位您想要的位置

    【讨论】:

      【解决方案5】:

      看看at this question我想这会满足你的需要。

      【讨论】:

        【解决方案6】:
        public static void PlaceNotepad( int x, int y, int w, int h) 
        {
            Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Notepad", "iWindowPosX", x); // X is horizontal / left to right
            Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Notepad", "iWindowPosY", y); // Y is vertical / top to bottom
            Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Notepad", "iWindowPosDX", w); // DX is width
            Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Notepad", "iWindowPosDY", h); // DY is height
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-23
          • 1970-01-01
          • 2016-10-05
          • 1970-01-01
          • 2019-06-03
          • 1970-01-01
          相关资源
          最近更新 更多