使用 C# 和 WIN32 滚动记事本

2024-02-19

我正在尝试使用 C# 应用程序滚动记事本窗口。相关的代码块如下,移动/调整窗口大小的调用有效,所以我知道句柄是有效的

请你看看我错过了什么,运行时什么也没有发生。

    [Flags]
    public enum SetWindowPosFlags : uint
    {
        SWP_ASYNCWINDOWPOS = 0x4000,
        SWP_DEFERERASE = 0x2000,
        SWP_DRAWFRAME = 0x0020,
        SWP_FRAMECHANGED = 0x0020,
        SWP_HIDEWINDOW = 0x0080,
        SWP_NOACTIVATE = 0x0010,
        SWP_NOCOPYBITS = 0x0100,
        SWP_NOMOVE = 0x0002,
        SWP_NOOWNERZORDER = 0x0200,
        SWP_NOREDRAW = 0x0008,
        SWP_NOREPOSITION = 0x0200,
        SWP_NOSENDCHANGING = 0x0400,
        SWP_NOSIZE = 0x0001,
        SWP_NOZORDER = 0x0004,
        SWP_SHOWWINDOW = 0x0040,
    }


    private const int WM_SCROLL = 276; // Horizontal scroll
    private const int WM_VSCROLL = 277; // Vertical scroll
    private const int SB_LINEUP = 0; // Scrolls one line up
    private const int SB_LINELEFT = 0;// Scrolls one cell left
    private const int SB_LINEDOWN = 1; // Scrolls one line down
    private const int SB_LINERIGHT = 1;// Scrolls one cell right
    private const int SB_PAGEUP = 2; // Scrolls one page up
    private const int SB_PAGELEFT = 2;// Scrolls one page left
    private const int SB_PAGEDOWN = 3; // Scrolls one page down
    private const int SB_PAGERIGTH = 3; // Scrolls one page right
    private const int SB_PAGETOP = 6; // Scrolls to the upper left
    private const int SB_LEFT = 6; // Scrolls to the left
    private const int SB_PAGEBOTTOM = 7; // Scrolls to the upper right
    private const int SB_RIGHT = 7; // Scrolls to the right
    private const int SB_ENDSCROLL = 8; // Ends scroll


    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, SetWindowPosFlags uFlags);



    public void scroll()
    {


        IntPtr handle = IntPtr.Zero;

        Process[] processes = Process.GetProcessesByName("Notepad");

        foreach (Process p in processes)
        {
            handle = p.MainWindowHandle;

            Console.WriteLine("Got Handle: " + p.MainWindowTitle);

            break;
        }

        //this is to test I have a valid handle
        SetWindowPos(handle, new IntPtr(0), 10, 10, 1024, 350, SetWindowPosFlags.SWP_DRAWFRAME);


        SendMessage(handle, WM_VSCROLL,  (IntPtr)SB_LINEDOWN, IntPtr.Zero);
        SendMessage(handle, WM_VSCROLL, (IntPtr)SB_PAGEDOWN, IntPtr.Zero);

    }

此操作失败,因为您正在向主窗口发送 WM_VSCROLL 消息。您需要将消息发送到记事本的编辑控件,即带有滚动条的窗口。

您可以使用枚举记事本子窗口枚举ChildWindows http://msdn.microsoft.com/en-us/library/windows/desktop/ms633494%28v=vs.85%29.aspx。具有“编辑”类别的孩子就是您想要的孩子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 和 WIN32 滚动记事本 的相关文章

  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • .NET 中是否有内置函数可以对密码进行哈希处理?

    我看到这个问题加密 散列数据库中的纯文本密码 https stackoverflow com questions 287517 encrypting hashing plain text passwords in database 我知道我
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 重载<<的返回值

    include
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • IEnumerable 与 IReadOnlyList

    选择有什么区别IEnumerable
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • Windows 目录永远不会包含临时文件的非 ASCII 字符?

    在 Windows 上使用 MinGW 7 3 0 由于 Windows 限制 Hunspell 无法从包含非 ASCII 字符的位置加载字典文件 我已经尝试了所有方法 1 现在我将文件复制到没有 ASCII 字符的路径 然后再将其交给 H
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 如何使用新的 Android 4.0 Ice Cream Sandwich API 读取和编辑 Android 日历事件?

    当用户想要添加新事件时 我们试图向用户展示冰淇淋三明治日历视图 我们只能在模拟器中进行测试 另一个问题是我们找不到任何如何使用 CalendarProvider 的示例 在处理三明治日历时 这是正确的课程吗 使用 Google Gdata
  • focus() 在颜色框弹出窗口中不起作用

    我尝试使用focus对于表单上的第一个输入字段 但 它不起作用 当我打电话时attr id 对于该输入 它起作用了 当我为相同的输入调用焦点时 我没有看到任何 结果 我也尝试过使用原生 Javascript 有谁知道如何 解决这个问题吗 你
  • 管理多个版本的序列化 Java 对象

    假设我有一个程序由于某种原因需要处理旧版本的序列化对象 例如 反序列化时 可能会遇到这些版本之一 class Pet private static final long serialVersionUID 1L int paws class
  • 为什么这段代码不起作用?刽子手

    我正在创建一个刽子手游戏 一切正常 我已经准备好了代码 可用于使游戏失败并给猜测值 1 尽管当将它添加到 else 语句中时 它会重复等于单词的长度 并且它也会给出一个猜测 即使它是正确的 我没看出代码有什么问题 我相信这是我的代码在猜测错
  • 假脱机多个文件

    我有一份报告 需要将 n 个供应商导出到 csv 文件 我有一种感觉 我需要多次运行它 所以我想尽可能地自动化它 我为一个供应商编写了所需的 sql plus 我想知道如何编写脚本来为每个供应商运行 我将供应商列表存储在数据库的表中 但知道
  • Rails - 当模型验证失败时,URL 更改会令人困惑

    我有一个用户资源在哪里 name是模型上的必需属性 如果我尝试创建一个新用户without一个名称 则验证失败并且错误消息按预期显示在表单顶部 but页面的 URL 更改为 users new to users 直到今晚我第一次开始玩水豚时
  • Microsoft Azure 备份在保留期缩短后不会减少可用恢复点或目标使用情况

    在保留期缩短后 Microsoft Azure 备份不会减少可用恢复点或目标使用情况 我将保留期设置为 30 天 备份量约为 6 8TB 一周前 我将保留期更改为 7 天 花了几天时间总恢复点才降至 7 个 使用率仍在上升 我今天 星期一
  • Django 每个应用程序的不同设置

    如何为每个应用程序使用不同的设置 例如 http www mysite com app1 http www mysite com app1使用 app1 文件夹的 settings py local settings py http www
  • git 合并不同的存储库?

    我所有的项目都使用 SVN 有时项目 B 是项目 A 的副本 当项目 A 有一般性变更时 我可以使用svn merge A在目录 B 中 它将合并这些更改 现在 如果我想使用 git 我不喜欢将所有项目放在同一个存储库中 因为这样我就必须克
  • WPF:找不到 Microsoft_Windows_Themes

    我在 WPF 应用程序中收到此错误 找不到类型 Microsoft Windows Themes ScrollChrome 验证您没有缺少程序集引用并且所有引用的程序集均已构建 任何想法 确保将此引用添加到控件 页面 资源字典 其他内容的最
  • 读取外部网站提交的 Angular 中的 POST 表单

    我正在开发一个网站 后端使用 Java 前端使用 Angular 有一种情况 一些外部网站可能会使用POST形式向我的网站发送数据 例如 General请求网址 https myangularwebsite 请求方式 POST 请求标头内容
  • 我可以在四元数中切换 X Y Z 吗?

    我有一个 Y 轴向上的坐标系 我需要将其转换为 Z 向上的坐标系 我将旋转存储在四元数中 所以我的问题是 如果我有一个四元数 X Y Z 我可以用 Z 切换 Y 并得到 Z 实际上是 UP 的结果吗 只是交换四元数中的两个轴 不 这不起作用
  • Azure Bicep - 有条件地创建一个秘密

    我正在使用 Bicep 创建一个 KeyVault 并且我想在保管库中创建一个秘密 但前提是还没有给定名称的秘密 检查 KeyVault 是否存在不起作用 因此我现在正在检查特定标签是否存在 创建 Vault 时 我在资源组中写入一个标签
  • 如何查看.RData 文件中的数据?

    我必须加载 isfar RData 文件才能在其他计算中使用它 此处描述并不重要 我想简单地看看 isfar RData 文件中的数据如何 例如它携带什么数字 列 行 首先我加载我的文件 isfar lt load C Users isfa
  • 打印 NSMutableURLRequest 内容

    我想问是否有人尝试过打印 NSMutableURLRequest request 的值 这是我的场景 我已经形成了我的 XML 并尝试使用 Firefox Poster 插件发送它 我成功地处理了有效和无效的内容 所以是时候进入 iOS 了
  • 全面的初学者 virtualenv 教程? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我最近听到有关 virtualenv 的传闻 我很感兴趣 但我所听到的只是一些赞扬 并不清楚它是什么或如何使用它 我正在寻找 理想情况下
  • java中如何调用一个线程在特定时间运行?

    我想让线程在特定的确切时间执行 例如 2012 07 11 13 12 24 和 2012 07 11 15 23 45 我检查了ScheduledExecutorService 但它只支持在第一次运行后的特定时间段后执行 而且我没有任何固
  • UITableView 在动画过程中崩溃,已找到解决方案,但没有找到根本原因,想知道为什么?

    在我的iphone项目中 我总是将UITableView作为IBOutlet插入到视图控制器中 大多数时候它运行良好 但是当popToRootViewControllerAnimated调用动画时会发生随机崩溃 通过僵尸跟踪 发现崩溃是由于
  • 如何构建 JSON 对象?

    目前我通过执行以下操作构建 JSON 对象 users User all users each do user userlist lt lt id gt user id fname gt user fname lname gt user l
  • 使用 C# 和 WIN32 滚动记事本

    我正在尝试使用 C 应用程序滚动记事本窗口 相关的代码块如下 移动 调整窗口大小的调用有效 所以我知道句柄是有效的 请你看看我错过了什么 运行时什么也没有发生 Flags public enum SetWindowPosFlags uint