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。谁有空的可以测试一下看看...
你要的是这个效果?
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
lixiaolong 发表于 2022-7-24 14:18
你要的是这个效果?
控件类名已经不一样了,好像不灵光了
我的win11没有变啊,还是 #32770
用 _GUICtrlRichEdit_* 尝试~ lixiaolong 发表于 2022-7-24 16:08
我的win11没有变啊,还是 #32770
奇怪了,我这里弹出保存对话框后,用窗口探测工具都找不到#32770。
而且窗口探测器无法探测到弹出的保存对话框 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
试过了,也不行....
至少句柄不对,不应该用窗口的,要 RichEdit 控件的。
探测窗口? https://www.autoitx.com/forum.php?mod=viewthread&tid=17882&extra=page%3D1 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
改成这样甚至都莫名其妙的卡顿,记事本还自动关闭了
[
cashiba 发表于 2022-7-24 22:47
改成这样甚至都莫名其妙的卡顿,记事本还自动关闭了
[
多添加调试信息,查看@Error,而不是Sleep...
自己搞吧~ #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的记事本跟之前的不同了,控件类名变了。
要用需要改下代码。
另外关闭保存对话框似乎不再是#32770。窗口探测器无法把焦点定位到按钮上...
afan 发表于 2022-7-24 22:53
多添加调试信息,查看@Error,而不是Sleep...
自己搞吧~
辛苦了,谢谢A大!
这个不算求助帖,只是分享一下win11的一些变化
劳各位大神费神了...
{:1_211:} cashiba 发表于 2022-7-24 23:05
辛苦了,谢谢A大!
这个不算求助帖,只是分享一下win11的一些变化
劳各位大神费神了...
就是需要将 Edit1 改为 RichEditD2DPT1 即可是吧~
看小龙的回复,貌似他的并不一样,仍为 Edit1,所以,建议首先 ControlGetHandle($hWnd,"","Edit1"),失败则改为 RichEditD2DPT1,以兼容不同的版本。
至于对话框无法探测到,我这没法测试(XP),无解~ cashiba 发表于 2022-7-24 23:00
另外关闭保存对话框似乎不再是#32770。窗口探测器无法把焦点定位到按钮上...
用的这个窗口信息探测器,可以分享一下麻
页:
[1]