无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: mdyblog
打印 上一主题 下一主题

[更新376#2825]PECMD2012.1.80.13_Win32_64.多窗口多线程.裸机系统2.3.3.1+18M酷M...

    [复制链接]
16711#
发表于 2022-4-22 10:59:42 | 只看该作者
本帖最后由 Anson4 于 2022-4-22 11:29 编辑

就是想要这种效果,对!
回复

使用道具 举报

16712#
发表于 2022-4-22 11:26:57 | 只看该作者
mdyblog 发表于 2022-4-22 10:46
目测, 字体和字体大小不同。
系统用的字体粗壮圆润, 字号也比较大。

同样的字体大小,感觉pecmd的字很糊,看我16667楼上传的托盘图标右键字体
回复

使用道具 举报

16713#
 楼主| 发表于 2022-4-23 10:13:02 | 只看该作者
Anson4 发表于 2022-4-21 09:29
从帮助文档可以看到,BROW指令打开的对话框有三种风格:
1. 选择或者保存文件
2. 选择目录

新版\示例\BROWDirX.wcs

点评

对话框如果用这种风格的话,不知道操作会不会更方便。 [attachimg]500177[/attachimg]  详情 回复 发表于 2022-4-23 12:30
M大辛苦了,感谢更新! 我测试了一下,想提几点建议,M大看看能不能优化一下: 1. 增加调整窗口大小的功能,下次打开显示为上次的窗口大小。 2. 现在每次打开窗口总是对齐到屏幕的左上角,建议显示在上次的位置。  详情 回复 发表于 2022-4-23 12:10
这个位置空白,有点奇怪 [attachimg]500168[/attachimg]  详情 回复 发表于 2022-4-23 11:58
回复

使用道具 举报

16714#
发表于 2022-4-23 11:00:26 | 只看该作者
某个品牌机型某些机器shel explorer.exe会卡90秒左右,改成exec explorer.exe后正常。

分别测试了210216、220330、220331、220331B、220331D都有此问题。

也不知道此问题是否和硬盘有关系,分区助手8.2PE版也卡老半天才能进去,但是硬盘无坏道、电脑也比较新,diskpart正常、DG进去不卡,各分区浏览文件一切正常,尝试删除重建启动分区、重建MBR、清除保留扇区后故障依旧,但是exec explorer.exe不卡。

该机型的有些机器上(都是同型号,配置完全相同,同上),无论哪个命令加载explorer都是正常的。

这种时有时无的问题,无论软件还是硬件解决起来最麻烦了,是不是只能exec先用着了。。。

点评

所有pe都会吗  详情 回复 发表于 2022-4-23 11:06
回复

使用道具 举报

16715#
发表于 2022-4-23 11:06:35 | 只看该作者
nttwqz 发表于 2022-4-23 11:00
某个品牌机型某些机器shel explorer.exe会卡90秒左右,改成exec explorer.exe后正常。

分别测试了210216 ...

所有pe都会吗

点评

是的,用本坛slore的生成了好几次了都,但是8.1PE正常。 而且这个问题只在该型号的有些机器上出现,总体出现概率较高。其它型号没有出现过一次,哪怕是老爷机,神奇。  详情 回复 发表于 2022-4-23 11:11
回复

使用道具 举报

16716#
发表于 2022-4-23 11:11:01 | 只看该作者

是的,用本坛slore的生成了好几次了都,但是8.1PE正常。

而且这个问题只在该型号的有些机器上出现,总体出现概率较高。其它型号没有出现过一次,哪怕是老爷机,神奇。
回复

使用道具 举报

16717#
发表于 2022-4-23 11:58:11 | 只看该作者
mdyblog 发表于 2022-4-23 10:13
新版\示例\BROWDirX.wcs


这个位置空白,有点奇怪


点评

勤快点。 将 右边2按钮 重新布置下。  详情 回复 发表于 2022-4-23 12:50
我感觉是隐藏了该位置的某些元素造成的  发表于 2022-4-23 12:12
回复

使用道具 举报

16718#
发表于 2022-4-23 12:10:12 | 只看该作者
mdyblog 发表于 2022-4-23 10:13
新版\示例\BROWDirX.wcs

M大辛苦了,感谢更新!
我测试了一下,想提几点建议,M大看看能不能优化一下:
1. 增加调整窗口大小的功能,下次打开显示为上次的窗口大小。
2. 现在每次打开窗口总是对齐到屏幕的左上角,建议显示在上次的位置。
3. 窗口下边框稍微有点宽,能优化就优化一下。


点评

调整了下布局,默认弹出到屏幕中间,你看看这样满意吗 [attachimg]500201[/attachimg] //authored by @IFEX %&CurFile%.LOG, LOGS * %&CurFile%.LOG @TEAM ENVI^ EnviMode=1| ENVI^ ForceLocal=1 //  详情 回复 发表于 2022-4-23 18:45
可以自己重新布局下。  详情 回复 发表于 2022-4-23 13:16
回复

使用道具 举报

16719#
发表于 2022-4-23 12:23:03 | 只看该作者
请问M大,有什么办法能让MESS消息对话框保持与系统对话框相同的风格(就是按钮在窗口右下角)吗?
要是能在脚本中通过代码来控制MESS消息对话框的大小以及各个控件就好了。
其实我的想法是,不但让MESS消息对话框保持与系统对话框的风格,还能将MESS消息对话框的大小分别统一成几个规格的大小。


点评

MESS=  详情 回复 发表于 2022-4-23 12:28
回复

使用道具 举报

16720#
发表于 2022-4-23 12:28:35 | 只看该作者
Anson4 发表于 2022-4-23 12:23
请问M大,有什么办法能让MESS消息对话框保持与系统对话框相同的风格(就是按钮在窗口右下角)吗?
要是能 ...

MESS=

点评

指令很有效,感谢5大回复! 在帮助文档中实习和杨描述的,不知道会有什么其他影响没有? [attachimg]500178[/attachimg]  详情 回复 发表于 2022-4-23 12:39
回复

使用道具 举报

16721#
发表于 2022-4-23 12:30:58 | 只看该作者
mdyblog 发表于 2022-4-23 10:13
新版\示例\BROWDirX.wcs

对话框如果用这种风格的话,不知道操作会不会更方便。当然,前提是能够实现。


点评

勤快点, 自己重新布局下。  详情 回复 发表于 2022-4-23 13:15
回复

使用道具 举报

16722#
发表于 2022-4-23 12:39:00 | 只看该作者

指令很有效,感谢5大回复!
在帮助文档中实习和杨描述的,不知道会有什么其他影响没有?

点评

从某一个新版开始才知道和普通的MESS一样的特性,较早的版本不行。  发表于 2022-4-23 13:18
我一直以来都 是这么用的,没发现啥问题  详情 回复 发表于 2022-4-23 12:45
回复

使用道具 举报

16723#
发表于 2022-4-23 12:39:12 | 只看该作者
mdyblog 发表于 2022-4-22 10:46
目测, 字体和字体大小不同。
系统用的字体粗壮圆润, 字号也比较大。

但是通过自定义dpi,pecmd就会显示清晰,但会出现另一个问题,16671楼截图所示,帮助页面框线会变乱,不知道什么原因

点评

但是通过自定义dpi,pecmd就会显示清晰,但会出现另一个问题,16671楼截图所示,帮助页面框线会变乱,不知道什么原因 -------------- 页面框线会变乱 这个正常。 制表符, 只有 特定(实际大小的)字体环境 时  详情 回复 发表于 2022-4-23 12:53
回复

使用道具 举报

16724#
发表于 2022-4-23 12:45:53 | 只看该作者
Anson4 发表于 2022-4-23 12:39
指令很有效,感谢5大回复!
在帮助文档中实习和杨描述的,不知道会有什么其他影响没有?

我一直以来都 是这么用的,没发现啥问题

点评

明白了,谢谢!  发表于 2022-4-23 13:01
回复

使用道具 举报

16725#
 楼主| 发表于 2022-4-23 12:50:50 | 只看该作者
527104427 发表于 2022-4-23 11:58
这个位置空白,有点奇怪

勤快点。 将 右边2按钮 重新布置下。
回复

使用道具 举报

16726#
 楼主| 发表于 2022-4-23 12:53:58 | 只看该作者
本帖最后由 mdyblog 于 2022-4-23 12:55 编辑
泮安宁 发表于 2022-4-23 12:39
但是通过自定义dpi,pecmd就会显示清晰,但会出现另一个问题,16671楼截图所示,帮助页面框线会变乱,不 ...

但是通过自定义dpi,pecmd就会显示清晰,但会出现另一个问题,16671楼截图所示,帮助页面框线会变乱,不知道什么原因
--------------
页面框线会变乱
这个正常。不用管它。
制表符, 只有 特定(实际大小和名称等)字体环境 时, 才是工整的。 此时, 就是绝对的 等宽字体。 否则宽宽窄窄的, 不齐整。

PE下一般都不齐整。 因为字体原因。

点评

好的,明白了,谢谢  发表于 2022-4-23 13:04
这些和自己用pecmd写UI都没有任何关系,UI可以自己设置字体,自己设置dpi拉伸。help界面文字也是自己临时看一下,真要把这个界面处理了dpi拉伸问题,就会影响到自己写UI的逻辑了  详情 回复 发表于 2022-4-23 12:58
回复

使用道具 举报

16727#
发表于 2022-4-23 12:58:06 来自手机 | 只看该作者
mdyblog 发表于 2022-4-23 12:53
但是通过自定义dpi,pecmd就会显示清晰,但会出现另一个问题,16671楼截图所示,帮助页面框线会变乱,不 ...

这些和自己用pecmd写UI都没有任何关系,UI可以自己设置字体,自己设置dpi拉伸。help界面文字也是自己临时看一下,真要把这个界面处理了dpi拉伸问题,就会影响到自己写UI的逻辑了

点评

很明显这是我御用的编程语言  详情 回复 发表于 2022-4-24 15:00
回复

使用道具 举报

16728#
 楼主| 发表于 2022-4-23 13:15:50 | 只看该作者
Anson4 发表于 2022-4-23 12:30
对话框如果用这种风格的话,不知道操作会不会更方便。当然,前提是能够实现。

勤快点, 自己重新布局下。
回复

使用道具 举报

16729#
 楼主| 发表于 2022-4-23 13:16:46 | 只看该作者
Anson4 发表于 2022-4-23 12:10
M大辛苦了,感谢更新!
我测试了一下,想提几点建议,M大看看能不能优化一下:
1. 增加调整窗口大小的 ...

可以自己重新布局下。

点评

m大不如举个例子吧,我看他跟我一样,是个编程小白,啥也不懂的。 我就是随口一说,m大不必在意  详情 回复 发表于 2022-4-23 13:24
回复

使用道具 举报

16730#
发表于 2022-4-23 13:24:00 | 只看该作者
mdyblog 发表于 2022-4-23 13:16
可以自己重新布局下。

m大不如举个例子吧,我看他跟我一样,是个编程小白,啥也不懂的

我就是随口一说,m大不必在意




点评

CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE% ///chx1=1040 以只读方式打开(&R) 下面 CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%IDOK% 这样会的获得 打开按钮的 句柄w 可以移动 ENVI @  详情 回复 发表于 2022-4-23 14:00
我确实是没看明白^-^  发表于 2022-4-23 13:28
回复

使用道具 举报

16731#
 楼主| 发表于 2022-4-23 14:00:05 | 只看该作者
本帖最后由 mdyblog 于 2022-4-23 17:02 编辑
527104427 发表于 2022-4-23 13:24
m大不如举个例子吧,我看他跟我一样,是个编程小白,啥也不懂的。

我就是随口一说,m大不必 ...

CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  ///chx1=1040 以只读方式打开(&R)
下面
CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%IDOK%
这样会的获得 打开按钮的 句柄w
可以移动
ENVI @@POS=%w%:X:y:W:H
ENVI @@POS=%w%:250


CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%IDCANCEL%
为 取消 按钮
            CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%IDOK%
            ENVI @@POS=%w%:250:
            CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%IDCANCEL%
            ENVI @@POS=%w%:250:
效果:

点评

实际测试中,我发现还有一个隐藏的问题:界面和字体没有跟随系统DPI(在环境150%DPI的情况下,字体比系统字体小)。 [attachimg]500222[/attachimg]  详情 回复 发表于 2022-4-24 01:00
这个看明白了,谢谢!  发表于 2022-4-24 00:56
回复

使用道具 举报

16732#
发表于 2022-4-23 18:45:16 | 只看该作者
本帖最后由 527104427 于 2022-4-23 21:01 编辑
Anson4 发表于 2022-4-23 12:10
M大辛苦了,感谢更新!
我测试了一下,想提几点建议,M大看看能不能优化一下:
1. 增加调整窗口大小的 ...

调整了下布局,默认弹出到屏幕中间,你看看这样满意吗



还有,强迫症受不了这个白边,顺便也处理了一下





//authored by mdyblog@163.com
@IFEX %&CurFile%.LOG, LOGS * %&CurFile%.LOG
@TEAM ENVI^ EnviMode=1| ENVI^ ForceLocal=1
//SET &RetBrow=0
//SET< RetBrow=\XXX
//MESS. RetBrow[%RetBrow%]

SET$ &NL=0d 0a
SET$ &NLd=0d
SET$ &NLa=0a
SET$ TAB=09

IFEX #%&bX64%=3, SET &PTR_LEN=8!  SET &PTR_LEN=4
IFEX #%&bX64%=3, SET &SetWindowLongPtrW=SetWindowLongPtrW! SET &SetWindowLongPtrW=SetWindowLongW
SET &cmb1=1136
SET &cmb13=1148
SET &stc2=1089
SET &stc3=1090
SET &chx1=1040
SET &IDOK=1
SET &IDCANCEL=2
CALC -base=16 #&&CDN_INITDONE=0 - 601 - 0x0000
CALC -base=16 #&&CDM_GETFOLDERPATH=0x0400 + 100 + 0x0002

SET &SW_HIDE=0x0
CALC #&&WM_NOTIFY=0x004E
CALC #&&WM_COMMAND=0x0111
SET &WM_INITDIALOG=0x0110
CALC -base=16 #&&GWLP_WNDPROC=-4

SET &BorwOriWndProc=0
SET &RetBrow.flg=0
SET &RetBrow=

ENVI^ WndProc1,&&WndProc1Adr
ENVI^ WndProc2,&&WndProc2Adr


_SUB OnWndProc1  //hdlg uiMsg wParm lParam
    @TEAM SET &hdlg=%~1| SET &uiMsg=%~2| SET &wParam=%~3| SET &lParam=%~4
        IFEX #[ %uiMsg%=%WM_INITDIALOG% & %hdlg%<>0 & %RetBrow.flg%=0 ],
        {        SET$ &wcsClassName1=*2048 0
                SET$ &wcsClassName2=*2048 0
        CALL $--ret:&&hParent user32.dll,GetParent,#%hdlg%
        CALL $--ret:&&n1 --qd user32.dll,GetClassNameW,#%hParent%,*wcsClassName1,#2047
        CALL $--ret:&&n2 --qd user32.dll,GetClassNameW,#%hdlg%,*wcsClassName2,#2047
                FIND $%wcsClassName1% = %wcsClassName2%,
        {        SET RetBrow.flg=0x1
            ^CALL $--ret:&BorwOriWndProc --qd user32.dll,%SetWindowLongPtrW%,#%hParent%,#%GWLP_WNDPROC%,#%WndProc2Adr%
                }
        }
    //HWND hwndFrom;UINT_PTR idFrom;UINT code;
        IFEX #%uiMsg%=%WM_NOTIFY%,
    {        ENVI?ints %lParam%=&&pnmh_code:(%PTR_LEN% * 2)    //LPNMHDR-->code
                IFEX #%CDN_INITDONE%=%pnmh_code%,
                {        CALL $--ret:&hParent user32.dll,GetParent,#%hdlg%
            CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%cmb1%
            CALL $--ret:&&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  //cmb1=1136 文件类型
            CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%cmb13%
            CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  //cmb13=1148 文件名
            CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%stc3%
            CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  //stc3=1090 文件名标签
            CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%stc2%
            CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  //stc2=1089 文件类型标签
            CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%chx1%
            CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  ///chx1=1040 以只读方式打开(&R)

           //以下重新布局

            CALL $--ret:&&w1 user32.dll,GetDlgItem,#%hParent%,#%IDCANCEL%
            ENVI @@POS=?%&&w1%:&&left1::&&wide1:&&high1

            CALL $--ret:&&w2 user32.dll,GetDlgItem,#%hParent%,#1120   //listbox
            ENVI @@POS=?%&&w2%::&&top2::&&high2

            ENVI @@POS=%&&w1%:(%&&left1%-20):(%&&top2%+%&&high2%+20)  //移动“取消按钮”

            CALL $--ret:&&w3 user32.dll,GetDlgItem,#%hParent%,#%IDOK%
            ENVI @@POS=%&&w3%:(%&&left1%-%&&wide1%-20-10):(%&&top2%+%&&high2%+20)  //移动“确定按钮”

            SCRN -win &&wide4,&&high4
            ENVI @@POS=?%hParent%:::&&wide5:&&high5
            ENVI @@POS=%hParent%:((%&&wide4%-%&&wide5%)/2):((%&&high4%-%&&high5%)/2)::(%&&top2%+%&&high2%+20+%&&high1%+45)   //调整主窗口高度、坐标

            CALL $--ret:&&w6 user32.dll,GetDlgItem,#%hParent%,#1091   //“查找范围”标签
            ENVI @@POS=?%&&w6%:&&left6::&&wide6:&&high6
            ENVI @@POS=%&&w6%:(%&&left6%+14)::(%&&wide6%-14):(%&&high6%-2)   //调整“查找范围”标签宽、高、坐标

           //以上重新布局

                }
        }
        EXIT= 0
_END

_SUB OnWndProc2  //hWnd uiMsg wParm lParam
    @TEAM SET &hWnd=%~1| SET &uiMsg=%~2| SET &wParam=%~3| SET &lParam=%~4
        IFEX #[ %uiMsg%=%WM_COMMAND% & %wParam%=%IDOK% ],
    {
        SET RetBrow.flg=0x00
        SET$ RetBrow=*8192 0 0
        CALL $--ret:&&w user32.dll,GetDlgItem,#%hwnd%,#%cmb13%
        SET$ &&V=*8192 0
        CALL $--qd --ret:&&ok user32.dll,GetWindowTextW,#%w%,*&V,#8191
        ENVI @@SENDMSG=%hwnd%:%CDM_GETFOLDERPATH%;8191;@RetBrow
        SED -ex &&i=?1,[\*\?],,&V
        IFEX [ '%RetBrow%'<>'' && '%V%'<>'' & #%i%<1 &  %RetBrow%\%&&V% ], SET RetBrow=%RetBrow%\%&&V%
        CALL $--qd --ret:&&ret user32.dll,%SetWindowLongPtrW%,#%hwnd%,#%GWLP_WNDPROC%,#%BorwOriWndProc%
        ENVI @@SENDMSG=%hwnd%:%uiMsg%;%IDCANCEL%;%lParam%
        EXIT= 0
        EXIT _SUB
    }
        IFEX #[ %uiMsg%=%WM_COMMAND% & %wParam%=%IDCANCEL% ],
    {
        SET RetBrow.flg=0x00
        CALL $--qd --ret:&&ret user32.dll,%SetWindowLongPtrW%,#%hwnd%,#%GWLP_WNDPROC%,#%BorwOriWndProc%
        ENVI @@SENDMSG=%hwnd%:%uiMsg%;%IDCANCEL%;%lParam%
        //EXIT= %IDCANCEL%
        EXIT _SUB
    }
    CALL $#,%BorwOriWndProc%,#%1,#%2,#%3,#%4
        EXIT= 0
_END

//带上 ;RetBrow.flg, 自动初始化标志RetBrow.flg
//只选择目录 注意带引号  注意 *..*   0x80000
BROW RetBrow;RetBrow.flg,"%WinDir%\*..*",请选择一个文件夹一保存驱动程序,,0x81000,%WndProc1Adr%
MESS. [%RetBrow%]


//选择文件和目录  注意带引号 0x80000
BROW RetBrow;RetBrow.flg,"%WinDir%\*.*",请选择一个文件夹或文件,,0x81000,%WndProc1Adr%
MESS. [%RetBrow%]




点评

5大,我发现用 0x881000,就可以调整窗口大小,而且下次打开会在上次的位置以上次的大小显示。  详情 回复 发表于 2022-4-24 07:14
挺好的!!!!  详情 回复 发表于 2022-4-23 20:24
回复

使用道具 举报

16733#
 楼主| 发表于 2022-4-23 20:24:20 | 只看该作者
527104427 发表于 2022-4-23 18:45
调整了下布局,默认弹出到屏幕中间,你看看这样满意吗

挺好的!!!!

点评

哈哈,原来是这么玩的,终于把文件名编辑框搞出来了! [attachimg]500211[/attachimg] //authored by @IFEX %&CurFile%.LOG, LOGS * %&CurFile%.LOG @TEAM ENVI^ EnviMode=1| ENVI^ ForceLocal=1  详情 回复 发表于 2022-4-23 22:02
回复

使用道具 举报

16734#
发表于 2022-4-23 22:02:36 | 只看该作者
mdyblog 发表于 2022-4-23 20:24
挺好的!!!!


哈哈,原来是这么玩的,终于把文件名编辑框搞出来了!






//authored by mdyblog@163.com
@IFEX %&CurFile%.LOG, LOGS * %&CurFile%.LOG
@TEAM ENVI^ EnviMode=1| ENVI^ ForceLocal=1
//SET &RetBrow=0
//SET< RetBrow=\XXX
//MESS. RetBrow[%RetBrow%]

SET$ &NL=0d 0a
SET$ &NLd=0d
SET$ &NLa=0a
SET$ TAB=09

IFEX #%&bX64%=3, SET &PTR_LEN=8!  SET &PTR_LEN=4
IFEX #%&bX64%=3, SET &SetWindowLongPtrW=SetWindowLongPtrW! SET &SetWindowLongPtrW=SetWindowLongW
SET &cmb1=1136
SET &cmb13=1148
SET &stc2=1089
SET &stc3=1090
SET &chx1=1040
SET &IDOK=1
SET &IDCANCEL=2
CALC -base=16 #&&CDN_INITDONE=0 - 601 - 0x0000
CALC -base=16 #&&CDM_GETFOLDERPATH=0x0400 + 100 + 0x0002

SET &SW_HIDE=0x0
CALC #&&WM_NOTIFY=0x004E
CALC #&&WM_COMMAND=0x0111
SET &WM_INITDIALOG=0x0110
CALC -base=16 #&&GWLP_WNDPROC=-4

SET &BorwOriWndProc=0
SET &RetBrow.flg=0
SET &RetBrow=

ENVI^ WndProc1,&&WndProc1Adr
ENVI^ WndProc2,&&WndProc2Adr


_SUB OnWndProc1  //hdlg uiMsg wParm lParam
    @TEAM SET &hdlg=%~1| SET &uiMsg=%~2| SET &wParam=%~3| SET &lParam=%~4
        IFEX #[ %uiMsg%=%WM_INITDIALOG% & %hdlg%<>0 & %RetBrow.flg%=0 ],
        {        SET$ &wcsClassName1=*2048 0
                SET$ &wcsClassName2=*2048 0
        CALL $--ret:&&hParent user32.dll,GetParent,#%hdlg%
        CALL $--ret:&&n1 --qd user32.dll,GetClassNameW,#%hParent%,*wcsClassName1,#2047
        CALL $--ret:&&n2 --qd user32.dll,GetClassNameW,#%hdlg%,*wcsClassName2,#2047
                FIND $%wcsClassName1% = %wcsClassName2%,
        {        SET RetBrow.flg=0x1
            ^CALL $--ret:&BorwOriWndProc --qd user32.dll,%SetWindowLongPtrW%,#%hParent%,#%GWLP_WNDPROC%,#%WndProc2Adr%
                }
        }
    //HWND hwndFrom;UINT_PTR idFrom;UINT code;
        IFEX #%uiMsg%=%WM_NOTIFY%,
    {        ENVI?ints %lParam%=&&pnmh_code:(%PTR_LEN% * 2)    //LPNMHDR-->code
                IFEX #%CDN_INITDONE%=%pnmh_code%,
                {        CALL $--ret:&hParent user32.dll,GetParent,#%hdlg%
            //CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%cmb1%
            //CALL $--ret:&&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  //cmb1=1136 文件类型
            //CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%cmb13%
            //CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  //cmb13=1148 文件名
            //CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%stc3%
            //CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  //stc3=1090 文件名标签
            //CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%stc2%
            //CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  //stc2=1089 文件类型标签
            CALL $--ret:&w user32.dll,GetDlgItem,#%hParent%,#%chx1%
            CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  ///chx1=1040 以只读方式打开(&R)

           //以下重新布局

            CALL $--ret:&&w1 user32.dll,GetDlgItem,#%hParent%,#%IDCANCEL%
            ENVI @@POS=?%&&w1%:@:&&top1::&&high1

            SCRN -win &&wide2,&&high2
            ENVI @@POS=?%hParent%:::&&wide3:&&high3
            ENVI @@POS=%hParent%:((%&&wide2%-%&&wide3%)/2):((%&&high2%-%&&high3%)/2):@:(%&&top1%+%&&high1%+15)   //调整主窗口高度、坐标

            CALL $--ret:&&w4 user32.dll,GetDlgItem,#%hParent%,#1091   //“查找范围”标签
            ENVI @@POS=?%&&w4%:&&left4:&&top4:&&wide4:&&high4
            ENVI @@POS=%&&w4%:(%&&left4%+14)::(%&&wide4%-14):(%&&high4%-2)   //调整“查找范围”标签宽、高、坐标

            CALL $--ret:&&w5 user32.dll,GetDlgItem,#%hParent%,#%stc2%   //“文件类型”标签
            ENVI @@POS=?%&&w5%:&&left5:&&top5:&&wide5:&&high5
            ENVI @@POS=%&&w5%:(%&&left5%+15)::(%&&wide5%-15):(%&&high5%-2)   //调整“文件类型”标签宽、高、坐标

            CALL $--ret:&&w6 user32.dll,GetDlgItem,#%hParent%,#%stc3%   //“文件名”标签
            ENVI @@POS=?%&&w6%:&&left6:&&top6:&&wide6:&&high6
            ENVI @@POS=%&&w6%:(%&&left6%+27)::(%&&wide6%-27):(%&&high6%-2)   //调整“文件名”标签宽、高、坐标

           //以上重新布局

                }
        }
        EXIT= 0
_END

_SUB OnWndProc2  //hWnd uiMsg wParm lParam
    @TEAM SET &hWnd=%~1| SET &uiMsg=%~2| SET &wParam=%~3| SET &lParam=%~4
        IFEX #[ %uiMsg%=%WM_COMMAND% & %wParam%=%IDOK% ],
    {
        SET RetBrow.flg=0x00
        SET$ RetBrow=*8192 0 0
        CALL $--ret:&&w user32.dll,GetDlgItem,#%hwnd%,#%cmb13%
        SET$ &&V=*8192 0
        CALL $--qd --ret:&&ok user32.dll,GetWindowTextW,#%w%,*&V,#8191
        ENVI @@SENDMSG=%hwnd%:%CDM_GETFOLDERPATH%;8191;@RetBrow
        SED -ex &&i=?1,[\*\?],,&V
        IFEX [ '%RetBrow%'<>'' && '%V%'<>'' & #%i%<1 &  %RetBrow%\%&&V% ], SET RetBrow=%RetBrow%\%&&V%
        CALL $--qd --ret:&&ret user32.dll,%SetWindowLongPtrW%,#%hwnd%,#%GWLP_WNDPROC%,#%BorwOriWndProc%
        ENVI @@SENDMSG=%hwnd%:%uiMsg%;%IDCANCEL%;%lParam%
        EXIT= 0
        EXIT _SUB
    }
        IFEX #[ %uiMsg%=%WM_COMMAND% & %wParam%=%IDCANCEL% ],
    {
        SET RetBrow.flg=0x00
        CALL $--qd --ret:&&ret user32.dll,%SetWindowLongPtrW%,#%hwnd%,#%GWLP_WNDPROC%,#%BorwOriWndProc%
        ENVI @@SENDMSG=%hwnd%:%uiMsg%;%IDCANCEL%;%lParam%
        //EXIT= %IDCANCEL%
        EXIT _SUB
    }
    CALL $#,%BorwOriWndProc%,#%1,#%2,#%3,#%4
        EXIT= 0
_END

//带上 ;RetBrow.flg, 自动初始化标志RetBrow.flg
//只选择目录 注意带引号  注意 *..*   0x80000
BROW RetBrow;RetBrow.flg,"%WinDir%\*..*",请选择一个文件夹一保存驱动程序,,0x81000,%WndProc1Adr%
MESS. [%RetBrow%]


//选择文件和目录  注意带引号 0x80000
BROW RetBrow;RetBrow.flg,"%WinDir%\*.*",请选择一个文件夹或文件,,0x81000,%WndProc1Adr%
MESS. [%RetBrow%]


点评

第二个函数最后,返回真是的动态结果,改为 CALL $--ret:&&r #,%BorwOriWndProc%,#%1,#%2,#%3,#%4 EXIT= %&r% 加了 类型控制变量RetBrow.tp, 0:仅目录 1:支持文件 3:支持文件和类型选择 效果  详情 回复 发表于 2022-4-24 09:52
可是,此时 文件名编辑框 和 文件类型选择框 好像不起作用。  详情 回复 发表于 2022-4-24 02:39
好!!!!!!  详情 回复 发表于 2022-4-24 02:17
我正想着怎么获取那个 listbox 的参数,将它的高度宽度增大,真是想什么来什么,感谢5大!  详情 回复 发表于 2022-4-24 00:52
哦吼,看的我一脸懵逼,这是干啥呢,这是赤裸裸的装B呀,先点赞再学习。  详情 回复 发表于 2022-4-24 00:09
回复

使用道具 举报

16735#
发表于 2022-4-24 00:09:41 | 只看该作者
527104427 发表于 2022-4-23 22:02
哈哈,原来是这么玩的,终于把文件名编辑框搞出来了!

哦吼,看的我一脸懵逼,这是干啥呢,这是赤裸裸的装B呀,先点赞再学习。
回复

使用道具 举报

16736#
发表于 2022-4-24 00:52:55 | 只看该作者
本帖最后由 Anson4 于 2022-4-24 00:55 编辑
527104427 发表于 2022-4-23 22:02
哈哈,原来是这么玩的,终于把文件名编辑框搞出来了!

我正想着怎么获取那个 listbox 的参数,将它的高度宽度增大,真是想什么来什么,感谢5大!
在英文系统环境下,那个白框还是存在:

回复

使用道具 举报

16737#
发表于 2022-4-24 01:00:58 | 只看该作者
本帖最后由 Anson4 于 2022-4-24 01:04 编辑
mdyblog 发表于 2022-4-23 14:00
CALL $--ret:&ret user32.dll,ShowWindow,#%w%,#%SW_HIDE%  ///chx1=1040 以只读方式打开(&R)
下面
CAL ...

实际测试中,我发现还有一个隐藏的问题:界面和字体没有跟随系统DPI(在环境150%DPI的情况下,字体比系统字体小)。
同时,我想到了另一个问题:在选择文件夹和文件的模式下,本增强的BROW命令与旧版的BROW命令,能不能允许指定文件类型?


点评

文件类型选择 和原来一样 如 *.EXE和*.DLL //选择文件和目录 注意带引号 0x80000 BROW RetBrow;RetBrow.flg,"%WinDir%\*.EXE;*.DLL",请选择一个文件夹或文件,,0x81000,%WndProc1Adr% MESS. [%RetBrow%]  详情 回复 发表于 2022-4-24 01:56
回复

使用道具 举报

16738#
 楼主| 发表于 2022-4-24 01:56:07 | 只看该作者
Anson4 发表于 2022-4-24 01:00
实际测试中,我发现还有一个隐藏的问题:界面和字体没有跟随系统DPI(在环境150%DPI的情况下,字体比系统 ...

文件类型选择 和原来一样
如 *.EXE和*.DLL
//选择文件和目录  注意带引号 0x80000
BROW RetBrow;RetBrow.flg,"%WinDir%\*.EXE;*.DLL",请选择一个文件夹或文件,,0x81000,%WndProc1Adr%
MESS. [%RetBrow%]

点评

明白了,谢谢!同时看帮助发现了 0x881000 就是窗口可调大小^_^ 原来的用法指定文件类型无效,是不是我写错了呢? BROW &FF,*"%WinDir%\*.reg",请选择一个文件夹或文件,,0x4000[/backcolor]  详情 回复 发表于 2022-4-24 02:34
回复

使用道具 举报

16739#
 楼主| 发表于 2022-4-24 02:17:42 | 只看该作者
527104427 发表于 2022-4-23 22:02
哈哈,原来是这么玩的,终于把文件名编辑框搞出来了!

好!!!!!!
回复

使用道具 举报

16740#
发表于 2022-4-24 02:34:53 | 只看该作者
mdyblog 发表于 2022-4-24 01:56
文件类型选择 和原来一样
如 *.EXE和*.DLL
//选择文件和目录  注意带引号 0x80000

明白了,谢谢!同时看帮助发现了 0x881000 就是窗口可调大小^_^

原来的用法指定文件类型无效,是不是我写错了呢?
BROW &FF,*"%WinDir%\*.reg",请选择一个文件夹或文件,,0x4000

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-10-2 22:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表