cashiba 发表于 2022-7-24 10:24:43

win11的记事本不一样了...[已解决]

本帖最后由 cashiba 于 2022-7-24 23:06 编辑

Example()

Func Example()   
Run("notepad.exe")
    Local $hWnd = WinWait("", "", 10)
    ControlSetText($hWnd, "", "Edit1", "这是一些文本")
    Local $sText = ControlGetText($hWnd, "", "Edit1")
    MsgBox(0, "", "编辑控件的文本: " & $sText)
    WinClose($hWnd)
EndFunc   ;==>Examplewin11系统。
昨天用这个代码做调试,发现不好使,才发现win11中记事本的底层代码可能更新了,像是使用.net框架重新写了代码
使用autoit v3 info工具无法定位到弹出保存对话框,并且弹出对话框类型不再是#32770了
附件是win11的记事本exe。谁有空的可以测试一下看看...






lixiaolong 发表于 2022-7-24 14:18:44

你要的是这个效果?

Example()

Func Example()
Run("notepad.exe")
    Local $hWnd = WinWait("", "", 10)
        ControlSend($hWnd, "", "Edit1", "这是一些文本")
    Local $sText = ControlGetText($hWnd, "", "Edit1")
    MsgBox(0, "", "编辑控件的文本: " & $sText)
    WinClose($hWnd)
EndFunc   ;==>Example

cashiba 发表于 2022-7-24 15:53:17

lixiaolong 发表于 2022-7-24 14:18
你要的是这个效果?

控件类名已经不一样了,好像不灵光了


lixiaolong 发表于 2022-7-24 16:08:37

我的win11没有变啊,还是 #32770

afan 发表于 2022-7-24 16:29:03

用 _GUICtrlRichEdit_* 尝试~

cashiba 发表于 2022-7-24 22:27:37

lixiaolong 发表于 2022-7-24 16:08
我的win11没有变啊,还是 #32770

奇怪了,我这里弹出保存对话框后,用窗口探测工具都找不到#32770。
而且窗口探测器无法探测到弹出的保存对话框

cashiba 发表于 2022-7-24 22:29:56

afan 发表于 2022-7-24 16:29
用 _GUICtrlRichEdit_* 尝试~

#include <GuiRichEdit.au3>

Example()

Func Example()
        Run("notepad.exe")
        Sleep(100)
        Local $hWnd = WinWait("", "", 10)
        _GUICtrlRichEdit_SetText($hWnd, $hWnd & @CRLF & "这是一些文本")
        Sleep(100)
        Local $sText = _GUICtrlRichEdit_GetText($hWnd)
        MsgBox(0,$hWnd, "编辑控件的文本: " & $sText,3)
        WinClose($hWnd)
EndFunc   ;==>Example

试过了,也不行....




afan 发表于 2022-7-24 22:32:26

至少句柄不对,不应该用窗口的,要 RichEdit 控件的。
探测窗口? https://www.autoitx.com/forum.php?mod=viewthread&tid=17882&extra=page%3D1

cashiba 发表于 2022-7-24 22:47:02

afan 发表于 2022-7-24 22:32
至少句柄不对,不应该用窗口的,要 RichEdit 控件的。
探测窗口? https://www.autoitx.com/forum.php?mod ...

#include <GuiRichEdit.au3>

Example()

Func Example()
        Run("notepad.exe")
        Sleep(100)
        Local $hWnd = WinWait("", "", 10)
        Sleep(100)
        Local $hEdt = ControlGetHandle($hWnd,"","RichEditD2DPT1")
        Sleep(100)
        _GUICtrlRichEdit_SetText($hEdt, $hWnd & @CRLF & $hEdt & @CRLF & "这是一些文本")
        Sleep(100)
        Local $sText = _GUICtrlRichEdit_GetText($hEdt)
        MsgBox(0,$hWnd, $hEdt & "编辑控件的文本: " & $sText)
        ;WinClose($hWnd)
EndFunc   ;==>Example

改成这样甚至都莫名其妙的卡顿,记事本还自动关闭了

[


afan 发表于 2022-7-24 22:53:07

cashiba 发表于 2022-7-24 22:47
改成这样甚至都莫名其妙的卡顿,记事本还自动关闭了

[

多添加调试信息,查看@Error,而不是Sleep...
自己搞吧~

cashiba 发表于 2022-7-24 22:55:40

#include <GuiRichEdit.au3>

Example()

Func Example()
      Run("notepad.exe")
      Sleep(100)
      Local $hWnd = WinWait("", "", 10)
      Sleep(100)
      Local $hEdt = ControlGetHandle($hWnd,"","RichEditD2DPT1")
      Sleep(100)
      ControlSetText($hWnd,"", "RichEditD2DPT1", $hWnd & @CRLF & $hEdt & @CRLF & "这是一些文本")
      Sleep(100)
      Local $sText = ControlGetText($hWnd,"", "RichEditD2DPT1")
      MsgBox(0,$hWnd, $hEdt & "编辑控件的文本: " & $sText)
      ;WinClose($hWnd)
EndFunc   ;==>Example




跑偏了。
这个帖子本来是提醒一下win11的记事本跟之前的不同了,控件类名变了。
要用需要改下代码。


cashiba 发表于 2022-7-24 23:00:34


另外关闭保存对话框似乎不再是#32770。窗口探测器无法把焦点定位到按钮上...

cashiba 发表于 2022-7-24 23:05:10

afan 发表于 2022-7-24 22:53
多添加调试信息,查看@Error,而不是Sleep...
自己搞吧~

辛苦了,谢谢A大!
这个不算求助帖,只是分享一下win11的一些变化
劳各位大神费神了...
{:1_211:}

afan 发表于 2022-7-24 23:17:23

cashiba 发表于 2022-7-24 23:05
辛苦了,谢谢A大!
这个不算求助帖,只是分享一下win11的一些变化
劳各位大神费神了...

就是需要将 Edit1 改为 RichEditD2DPT1 即可是吧~
看小龙的回复,貌似他的并不一样,仍为 Edit1,所以,建议首先 ControlGetHandle($hWnd,"","Edit1"),失败则改为 RichEditD2DPT1,以兼容不同的版本。

至于对话框无法探测到,我这没法测试(XP),无解~

frogwang 发表于 2022-7-26 16:45:39

cashiba 发表于 2022-7-24 23:00
另外关闭保存对话框似乎不再是#32770。窗口探测器无法把焦点定位到按钮上...

用的这个窗口信息探测器,可以分享一下麻
页: [1]
查看完整版本: win11的记事本不一样了...[已解决]