无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mdyblog
打印 上一主题 下一主题

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

    [复制链接]
15421#
 楼主| 发表于 2020-11-29 22:40:26 | 只看该作者
红毛樱木 发表于 2020-11-29 22:35
ExistOnly

#define OPEN_EXISTING       3

对。

点评

这个我之前翻译的,M大看看和你内置的功能是否一样。奇怪,我这里win7x64系统下读不出来,老是返回错误1117,在家里win10的电脑上又可以。用你的内置代码测试了下,结果一样。是不是有写情况就是注定读不了的呀,有  详情 回复 发表于 2020-11-29 22:44
回复

使用道具 举报

15422#
发表于 2020-11-29 22:44:03 | 只看该作者
  1. ENVI^ ENVIMODE=1
  2. //LOGS **2 * %&CurDir%\log.log
  3. ENVI &&hd=0
  4. IFEX $1<0,
  5. {*
  6. #define GENERIC_READ                     (0x80000000L)
  7. #define GENERIC_WRITE                    (0x40000000L)
  8. #define GENERIC_EXECUTE                  (0x20000000L)
  9. #define GENERIC_ALL                      (0x10000000L)
  10. }
  11. ENVI &&GENERIC_READ=0x80000000
  12. ENVI &&GENERIC_WRITE=0x40000000
  13. //ENVI &&lpFileName=\\\\.\\PhysicalDrive%&&hd%
  14. ENVI &&lpFileName=\\.\PhysicalDrive%&&hd%
  15. CALC &&dwDesiredAccess=%&&GENERIC_READ% | %&&GENERIC_WRITE%
  16. IFEX $1<0,
  17. {*
  18. // The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
  19. // devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
  20. // constants *MUST* always be in sync.
  21. // The values are redefined in devioctl.h because they must be available to
  22. // both DOS and NT.
  23. //

  24. #define FILE_READ_DATA            ( 0x0001 )    // file & pipe
  25. #define FILE_LIST_DIRECTORY       ( 0x0001 )    // directory

  26. #define FILE_WRITE_DATA           ( 0x0002 )    // file & pipe
  27. #define FILE_ADD_FILE             ( 0x0002 )    // directory

  28. #define FILE_APPEND_DATA          ( 0x0004 )    // file
  29. #define FILE_ADD_SUBDIRECTORY     ( 0x0004 )    // directory
  30. #define FILE_CREATE_PIPE_INSTANCE ( 0x0004 )    // named pipe


  31. #define FILE_READ_EA              ( 0x0008 )    // file & directory

  32. #define FILE_WRITE_EA             ( 0x0010 )    // file & directory

  33. #define FILE_EXECUTE              ( 0x0020 )    // file
  34. #define FILE_TRAVERSE             ( 0x0020 )    // directory

  35. #define FILE_DELETE_CHILD         ( 0x0040 )    // directory

  36. #define FILE_READ_ATTRIBUTES      ( 0x0080 )    // all

  37. #define FILE_WRITE_ATTRIBUTES     ( 0x0100 )    // all

  38. #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)

  39. #define FILE_GENERIC_READ         (STANDARD_RIGHTS_READ     |\
  40.                                    FILE_READ_DATA           |\
  41.                                    FILE_READ_ATTRIBUTES     |\
  42.                                    FILE_READ_EA             |\
  43.                                    SYNCHRONIZE)


  44. #define FILE_GENERIC_WRITE        (STANDARD_RIGHTS_WRITE    |\
  45.                                    FILE_WRITE_DATA          |\
  46.                                    FILE_WRITE_ATTRIBUTES    |\
  47.                                    FILE_WRITE_EA            |\
  48.                                    FILE_APPEND_DATA         |\
  49.                                    SYNCHRONIZE)


  50. #define FILE_GENERIC_EXECUTE      (STANDARD_RIGHTS_EXECUTE  |\
  51.                                    FILE_READ_ATTRIBUTES     |\
  52.                                    FILE_EXECUTE             |\
  53.                                    SYNCHRONIZE)

  54. #define FILE_SHARE_READ                 0x00000001  
  55. #define FILE_SHARE_WRITE                0x00000002  
  56. #define FILE_SHARE_DELETE               0x00000004  
  57. #define FILE_ATTRIBUTE_READONLY             0x00000001  
  58. #define FILE_ATTRIBUTE_HIDDEN               0x00000002  
  59. #define FILE_ATTRIBUTE_SYSTEM               0x00000004  
  60. #define FILE_ATTRIBUTE_DIRECTORY            0x00000010  
  61. #define FILE_ATTRIBUTE_ARCHIVE              0x00000020  
  62. #define FILE_ATTRIBUTE_DEVICE               0x00000040  
  63. #define FILE_ATTRIBUTE_NORMAL               0x00000080  
  64. #define FILE_ATTRIBUTE_TEMPORARY            0x00000100  
  65. #define FILE_ATTRIBUTE_SPARSE_FILE          0x00000200  
  66. #define FILE_ATTRIBUTE_REPARSE_POINT        0x00000400  
  67. #define FILE_ATTRIBUTE_COMPRESSED           0x00000800  
  68. #define FILE_ATTRIBUTE_OFFLINE              0x00001000  
  69. #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  0x00002000  
  70. #define FILE_ATTRIBUTE_ENCRYPTED            0x00004000  
  71. #define FILE_ATTRIBUTE_INTEGRITY_STREAM     0x00008000  
  72. #define FILE_ATTRIBUTE_VIRTUAL              0x00010000  
  73. #define FILE_ATTRIBUTE_NO_SCRUB_DATA        0x00020000  
  74. #define FILE_ATTRIBUTE_EA                   0x00040000  
  75. #define FILE_NOTIFY_CHANGE_FILE_NAME    0x00000001   
  76. #define FILE_NOTIFY_CHANGE_DIR_NAME     0x00000002   
  77. #define FILE_NOTIFY_CHANGE_ATTRIBUTES   0x00000004   
  78. #define FILE_NOTIFY_CHANGE_SIZE         0x00000008   
  79. #define FILE_NOTIFY_CHANGE_LAST_WRITE   0x00000010   
  80. #define FILE_NOTIFY_CHANGE_LAST_ACCESS  0x00000020   
  81. #define FILE_NOTIFY_CHANGE_CREATION     0x00000040   
  82. #define FILE_NOTIFY_CHANGE_SECURITY     0x00000100   
  83. #define FILE_ACTION_ADDED                   0x00000001   
  84. #define FILE_ACTION_REMOVED                 0x00000002   
  85. #define FILE_ACTION_MODIFIED                0x00000003   
  86. #define FILE_ACTION_RENAMED_OLD_NAME        0x00000004   
  87. #define FILE_ACTION_RENAMED_NEW_NAME        0x00000005   
  88. #define MAILSLOT_NO_MESSAGE             ((DWORD)-1)
  89. #define MAILSLOT_WAIT_FOREVER           ((DWORD)-1)
  90. #define FILE_CASE_SENSITIVE_SEARCH          0x00000001  
  91. #define FILE_CASE_PRESERVED_NAMES           0x00000002  
  92. #define FILE_UNICODE_ON_DISK                0x00000004  
  93. #define FILE_PERSISTENT_ACLS                0x00000008  
  94. #define FILE_FILE_COMPRESSION               0x00000010  
  95. #define FILE_VOLUME_QUOTAS                  0x00000020  
  96. #define FILE_SUPPORTS_SPARSE_FILES          0x00000040  
  97. #define FILE_SUPPORTS_REPARSE_POINTS        0x00000080  
  98. #define FILE_SUPPORTS_REMOTE_STORAGE        0x00000100  
  99. #define FILE_VOLUME_IS_COMPRESSED           0x00008000  
  100. #define FILE_SUPPORTS_OBJECT_IDS            0x00010000  
  101. #define FILE_SUPPORTS_ENCRYPTION            0x00020000  
  102. #define FILE_NAMED_STREAMS                  0x00040000  
  103. #define FILE_READ_ONLY_VOLUME               0x00080000  
  104. #define FILE_SEQUENTIAL_WRITE_ONCE          0x00100000  
  105. #define FILE_SUPPORTS_TRANSACTIONS          0x00200000  
  106. #define FILE_SUPPORTS_HARD_LINKS            0x00400000  
  107. #define FILE_SUPPORTS_EXTENDED_ATTRIBUTES   0x00800000  
  108. #define FILE_SUPPORTS_OPEN_BY_FILE_ID       0x01000000  
  109. #define FILE_SUPPORTS_USN_JOURNAL           0x02000000  
  110. #define FILE_SUPPORTS_INTEGRITY_STREAMS     0x04000000  
  111. #define FILE_INVALID_FILE_ID               ((LONGLONG)-1LL)
  112. typedef struct _FILE_ID_128 {                              
  113.     BYTE  Identifier[16];                                   
  114. } FILE_ID_128, *PFILE_ID_128;                              
  115. }
  116. ENVI &&FILE_SHARE_READ=0x00000001  
  117. ENVI &&FILE_SHARE_WRITE=0x00000002  
  118. ENVI &&FILE_SHARE_DELETE=0x00000004
  119. CALC &&dwShareMode=%&&FILE_SHARE_DELETE% | %&&FILE_SHARE_READ% | %&&FILE_SHARE_WRITE%
  120. IFEX $1<0,
  121. {*
  122. #define CREATE_NEW          1
  123. #define CREATE_ALWAYS       2
  124. #define OPEN_EXISTING       3
  125. #define OPEN_ALWAYS         4
  126. #define TRUNCATE_EXISTING   5

  127. #define INVALID_FILE_SIZE ((DWORD)0xFFFFFFFF)
  128. #define INVALID_SET_FILE_POINTER ((DWORD)-1)
  129. #define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
  130. }
  131. ENVI &&OPEN_EXISTING=3
  132. CALC &&dwFlagsAndAttributes=%&&OPEN_EXISTING%
  133. //失败返回INVALID_HANDLE_VALUE=-1
  134. CALL $--qd --ret:&&hDevice Kernel32.dll,CreateFileW,$%&&lpFileName%,#%&&dwDesiredAccess%,#%&&dwShareMode%,#0,#%&&dwFlagsAndAttributes%,#0,#0
  135. CALL $--ret:&&GetLastErrorRet Kernel32.dll,GetLastError
  136. MESS. %&&hDevice% %&&GetLastErrorRet%
  137. IFEX $%&&hDevice%=-1,EXIT


  138. CALC &&SMART_RCV_DRIVE_DATA=508040  //这个用VS算出来的,我也不知道怎么算的 - -!
  139. CALC &&dwIoControlCode=%&&SMART_RCV_DRIVE_DATA%

  140. //结构体
  141. IFEX $1<0,
  142. {*
  143. typedef struct _SENDCMDINPARAMS {
  144.         DWORD   cBufferSize;            // Buffer size in bytes                             //4b
  145.         IDEREGS irDriveRegs;            // Structure with drive register values.            //8b
  146.         BYTE     bDriveNumber;           // Physical drive number to send                   //1b
  147.                                                                 // command to (0,1,2,3).
  148.         BYTE     bReserved[3];           // Reserved for future expansion.                  //3b
  149.         DWORD   dwReserved[4];          // For future use.                                  //16b
  150.         BYTE     bBuffer[1];                     // Input buffer.                           //1b
  151. } SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;                                   //33b

  152. typedef struct _IDEREGS {
  153.         BYTE     bFeaturesReg;           // Used for specifying SMART "commands".
  154.         BYTE     bSectorCountReg;        // IDE sector count register
  155.         BYTE     bSectorNumberReg;       // IDE sector number register
  156.         BYTE     bCylLowReg;             // IDE low order cylinder value
  157.         BYTE     bCylHighReg;            // IDE high order cylinder value
  158.         BYTE     bDriveHeadReg;          // IDE drive/head register
  159.         BYTE     bCommandReg;            // Actual IDE command.
  160.         BYTE     bReserved;                      // reserved for future use.  Must be zero.
  161. } IDEREGS, *PIDEREGS, *LPIDEREGS;                                                           //8b
  162. }
  163. ENVI &&nInBufferSize=33
  164. ENVI$# &&lpInBuffer=*%&&nInBufferSize% 0
  165. IFEX $1<0,
  166. {*
  167. #define READ_ATTRIBUTE_BUFFER_SIZE  512
  168. #define IDENTIFY_BUFFER_SIZE        512
  169. #define READ_THRESHOLD_BUFFER_SIZE  512
  170. #define SMART_LOG_SECTOR_SIZE       512
  171. }
  172. ENVI &&READ_ATTRIBUTE_BUFFER_SIZE=512
  173. ENVI-long &&cBufferSize=%&&READ_ATTRIBUTE_BUFFER_SIZE%
  174. ENVI$# &&irDriveRegs=*8 0
  175. IFEX $1<0,
  176. {*
  177. #define READ_ATTRIBUTES         0xD0
  178. #define READ_THRESHOLDS         0xD1
  179. #define ENABLE_DISABLE_AUTOSAVE 0xD2
  180. #define SAVE_ATTRIBUTE_VALUES   0xD3
  181. #define EXECUTE_OFFLINE_DIAGS   0xD4
  182. #define SMART_READ_LOG          0xD5
  183. #define SMART_WRITE_LOG         0xd6
  184. #define ENABLE_SMART            0xD8
  185. #define DISABLE_SMART           0xD9
  186. #define RETURN_SMART_STATUS     0xDA
  187. #define ENABLE_DISABLE_AUTO_OFFLINE 0xDB
  188. #endif /* _WIN32_WINNT >= 0x0400 */
  189. }
  190. ENVI &&READ_ATTRIBUTES=0xD0
  191. ENVI-char &&bFeaturesReg=%&&READ_ATTRIBUTES%
  192. ENVI-char &&bSectorCountReg=1
  193. ENVI-char &&bSectorNumberReg=1
  194. IFEX $1<0,
  195. {*
  196. //
  197. // Cylinder register defines for SMART command
  198. //

  199. #define SMART_CYL_LOW   0x4F
  200. #define SMART_CYL_HI    0xC2
  201. }
  202. ENVI &&SMART_CYL_LOW=0x4F
  203. ENVI &&SMART_CYL_HI=0xC2
  204. ENVI-char &&bCylLowReg=%&&SMART_CYL_LOW%
  205. ENVI-char &&bCylHighReg=%&&SMART_CYL_HI%
  206. ENVI-char &&bDriveHeadReg=0xA0
  207. IFEX $1<0,
  208. {*
  209. //
  210. // Valid values for the bCommandReg member of IDEREGS.
  211. //

  212. #define ATAPI_ID_CMD    0xA1            // Returns ID sector for ATAPI.
  213. #define ID_CMD          0xEC            // Returns ID sector for ATA.
  214. #define SMART_CMD       0xB0            // Performs SMART cmd.
  215.                                         // Requires valid bFeaturesReg,
  216.                                         // bCylLowReg, and bCylHighReg
  217. }
  218. ENVI &&SMART_CMD=0xB0
  219. ENVI-char &&bCommandReg=%&&SMART_CMD%
  220. ENVI-copy &&irDriveRegs=&&bFeaturesReg;;1;0
  221. ENVI-copy &&irDriveRegs=&&bSectorCountReg;;1;1
  222. ENVI-copy &&irDriveRegs=&&bSectorNumberReg;;1;2
  223. ENVI-copy &&irDriveRegs=&&bCylLowReg;;1;3
  224. ENVI-copy &&irDriveRegs=&&bCylHighReg;;1;4
  225. ENVI-copy &&irDriveRegs=&&bDriveHeadReg;;1;5
  226. ENVI-copy &&irDriveRegs=&&bCommandReg;;1;6
  227. ENVI-char &&bDriveNumber=%&&hd%
  228. ENVI-copy &&lpInBuffer=&&cBufferSize;;4;0
  229. ENVI-copy &&lpInBuffer=&&irDriveRegs;;8;4
  230. ENVI-copy &&lpInBuffer=&&bDriveNumber;;1;12
  231. //BYTE szAttributes[sizeof(SENDCMDOUTPARAMS) + READ_ATTRIBUTE_BUFFER_SIZE - 1];     17 + 512 -1
  232. IFEX $1<0,
  233. {*
  234. typedef struct _SENDCMDOUTPARAMS {
  235.         DWORD                   cBufferSize;            // Size of bBuffer in bytes
  236.         DRIVERSTATUS            DriverStatus;           // Driver status structure.
  237.         BYTE                    bBuffer[1];             // Buffer of arbitrary length in which to store the data read from the                                                                                  // drive.
  238. } SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;                                                                        //17b
  239. }
  240. CALC &&nOutBufferSize=17 + 512 -1
  241. //ENVI-char &&lpOutBuffer=%&&nOutBufferSize%
  242. ENVI$# &&lpOutBuffer=*%&&nOutBufferSize% 0
  243. MESS. LAI
  244. //ENVI-long &&lpBytesReturned=0
  245. ENVI$# &&lpBytesReturned=*8 0
  246. CALL $--qd --bool --ret:&&bResult Kernel32.dll,DeviceIoControl,#%&&hDevice%,#%&&dwIoControlCode%,*&&lpInBuffer,#%&&nInBufferSize%,*&&lpOutBuffer,#%&&nOutBufferSize%,*&&lpBytesReturned,#0
  247. //CALL $--qd --bool --ret:&&bResult Kernel32.dll,DeviceIoControl,#%&&hDevice%,#%&&dwIoControlCode%,*&&lpInBuffer,#%&&nInBufferSize%,*&&lpOutBuffer,#%&&nOutBufferSize%,#0,#0
  248. CALL $--ret:&&GetLastErrorRet Kernel32.dll,GetLastError
  249. MESS. %&&bResult% %&&GetLastErrorRet%
  250. CALL $--qd --bool --ret:&&CloseHandleRet Kernel32.dll,CloseHandle,#%&&hDevice%
  251. MESS. %&&CloseHandleRet%



  252. EXIT FILE
  253. https://blog.csdn.net/cracker_zhou/article/details/73348966
  254. // 这里的diskid大概长这个样子:"\\\\.\\PHYSICALDRIVE0","\\\\.\\PHYSICALDRIVE1"  
  255. bool ReadSMARTAttributes(const char* diskid, ata_smart_values& smart_value, ata_smart_thresholds_pvt& threshold_value)
  256. {
  257.     BOOL bRet = false;
  258.     const wchar_t* physical_prefix = L"\\\\.\\PhysicalDrive";
  259.     if (diskid != NULL && wcslen(diskid) > wcslen(physical_prefix) &&
  260.         _wcsnicmp(diskid, physical_prefix, wcslen(physical_prefix)) == 0)
  261.     {
  262.         DWORD dwRet = 0;
  263.         int ucDriveIndex = wcstol(diskid + wcslen(physical_prefix), NULL, 10);
  264.         HANDLE hDevice = CreateFileW(diskid, GENERIC_READ | GENERIC_WRITE,
  265.             FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
  266.         if (hDevice == INVALID_HANDLE_VALUE) return false;

  267.         BYTE szAttributes[sizeof(SENDCMDOUTPARAMS) + READ_ATTRIBUTE_BUFFER_SIZE - 1];

  268.         SENDCMDINPARAMS stCIP = { 0 };
  269.         stCIP.cBufferSize = READ_ATTRIBUTE_BUFFER_SIZE;
  270.         stCIP.bDriveNumber = ucDriveIndex;
  271.         stCIP.irDriveRegs.bFeaturesReg = READ_ATTRIBUTES;
  272.         stCIP.irDriveRegs.bSectorCountReg = 1;
  273.         stCIP.irDriveRegs.bSectorNumberReg = 1;
  274.         stCIP.irDriveRegs.bCylLowReg = SMART_CYL_LOW;
  275.         stCIP.irDriveRegs.bCylHighReg = SMART_CYL_HI;
  276.         stCIP.irDriveRegs.bDriveHeadReg = 0xA0;
  277.         stCIP.irDriveRegs.bCommandReg = SMART_CMD;
  278.         bRet = DeviceIoControl(hDevice, SMART_RCV_DRIVE_DATA, &stCIP, sizeof(stCIP), szAttributes, sizeof(SENDCMDOUTPARAMS) + READ_ATTRIBUTE_BUFFER_SIZE - 1, &dwRet, NULL);
  279.         if (bRet)
  280.         {
  281.             smart_value = *(ata_smart_values*)(((SENDCMDOUTPARAMS*)szAttributes)->bBuffer);
  282.         }

  283.         stCIP.irDriveRegs.bFeaturesReg = READ_THRESHOLDS;
  284.         stCIP.cBufferSize = READ_THRESHOLD_BUFFER_SIZE;
  285.         bRet &= DeviceIoControl(hDevice, SMART_RCV_DRIVE_DATA, &stCIP, sizeof(stCIP), szAttributes, sizeof(SENDCMDOUTPARAMS) + READ_ATTRIBUTE_BUFFER_SIZE - 1, &dwRet, NULL);
  286.         if (bRet)
  287.         {
  288.             threshold_value = *(ata_smart_thresholds_pvt*)(((SENDCMDOUTPARAMS*)szAttributes)->bBuffer);
  289.         }
  290.         CloseHandle(hDevice);
  291.     }
  292.     return !!bRet;
  293. }
复制代码
这个我之前翻译的,M大看看和你内置的功能是否一样。奇怪,我这里win7x64系统下读不出来,老是返回错误1117,在家里win10的电脑上又可以。用你的内置代码测试了下,结果一样。是不是有写情况就是注定读不了的呀,有没有需要提权这种说法?分享给大伙玩一下。最近在做PECMD的一些直播,希望大家多来一起玩PECMD。

点评

CALC &&nOutBufferSize=17 + 512 -1[/backcolor] 这个17不对。[/backcolor] 应该是512字节[/backcolor] [/backcolor] //SET &sizeof_ata_smart_values=512 //2+12*30+150=512 struct ata_smart_values {  详情 回复 发表于 2020-11-29 23:24
回复

使用道具 举报

15423#
 楼主| 发表于 2020-11-29 23:24:38 | 只看该作者
本帖最后由 mdyblog 于 2020-11-29 23:56 编辑
红毛樱木 发表于 2020-11-29 22:44
这个我之前翻译的,M大看看和你内置的功能是否一样。奇怪,我这里win7x64系统下读不出来,老是返回错误11 ...

我在WIn7X64下测试的,是可以出数据的。
2个代码对比下吧。

---------------------------------
这个没有内置。 我依然写的是脚本。

代码没几行。  主要是资料分析。 和数据准备。



回复

使用道具 举报

15424#
 楼主| 发表于 2020-11-29 23:43:22 | 只看该作者
my9823 发表于 2020-11-28 09:42
使用正则表达式
sed vv=0,^.*?\\{.*},\1,%file_list%
只能替换文件列表第一行的盘符和斜杠,变量中的文件 ...

PECMD2012.1.88.05.84Stable-201129B.7z
SED 加了个分行轮询处理功能, 开关-L

sed  -ex -L  &vv=0,^.:\\{.*},\1,&file_list

点评

mdyblog威武,速度惊人啊!  详情 回复 发表于 2020-11-30 06:34
回复

使用道具 举报

15425#
发表于 2020-11-30 06:34:05 来自手机 | 只看该作者
mdyblog 发表于 2020-11-29 23:43
PECMD2012.1.88.05.84Stable-201129B.7z
SED 加了个分行轮询处理功能, 开关-L


mdyblog威武,速度惊人啊!
回复

使用道具 举报

15426#
 楼主| 发表于 2020-11-30 08:20:59 | 只看该作者
本帖最后由 mdyblog 于 2020-11-30 08:23 编辑
红毛樱木 发表于 2020-11-24 20:04
这里有个DLL不能加载,是DLL特殊吗?测试环境Win7x64
M大有空看下
CALL $--ret:返回名 ,-LoadLibrary,加 ...

这个DLL还依赖其他的DLL。 需要先转移到 该目录。
  1. SET &olddir=%&_CD%
  2. PATH @%&CurDir%\DISM\
  3. CALL $--ret:&DllRet  ,-LoadLibrary,%&CurDir%\DISM\dismapi.dll
  4. PATH @%&olddir%
  5. CALL $--ret:&DllRet62 ,-LoadLibrary,%&CurDir%\DISM62\dismapi.dll
  6. MESS. %&DllRet%  %&DllRet62%
复制代码



效果:


回复

使用道具 举报

15427#
 楼主| 发表于 2020-11-30 09:31:12 | 只看该作者
红毛樱木 发表于 2020-11-24 20:04
这里有个DLL不能加载,是DLL特殊吗?测试环境Win7x64
M大有空看下
CALL $--ret:返回名 ,-LoadLibrary,加 ...

PECMD2012.1.88.05.84Stable-201130.7z
版 加强了 -loadlibrary, 也支持--cd
自动转到DLL所在目录。
┃    │    │CALL $--ret:返回名 [--cd ][--nrcd ] ,-LoadLibrary,加载DLL路径       //加载DLL得到句柄 ┃



CALL $--ret:&DllRet --cd ,-LoadLibrary,%&CurDir%\DISM\dismapi.dll

成功
回复

使用道具 举报

15428#
发表于 2020-11-30 10:25:07 | 只看该作者
mdyblog 发表于 2020-11-29 20:35
PECMD2012.1.88.05.84Stable-201129.7z\示例\SMART硬盘信息.wcs
测试通过, 512字节信息。

smart能否做成比较直观的数据啊,就是一般人都能直接看懂的
回复

使用道具 举报

15429#
发表于 2020-11-30 11:34:54 | 只看该作者
mdyblog 发表于 2020-11-29 20:35
PECMD2012.1.88.05.84Stable-201129.7z\示例\SMART硬盘信息.wcs
测试通过, 512字节信息。

比如图中的信息:




点评

struct ata_smart_attribute { unsigned char id; unsigned short flags; unsigned char current; unsigned char worst; unsigned char raw[7]; }; 这个id 就是 信息 类型标示。就是上  详情 回复 发表于 2020-11-30 13:32
回复

使用道具 举报

15430#
 楼主| 发表于 2020-11-30 13:32:17 | 只看该作者
527104427 发表于 2020-11-30 11:34
比如图中的信息:

struct ata_smart_attribute {
    unsigned char id;
    unsigned short flags;
    unsigned char current;
    unsigned char worst;
    unsigned char raw[7];
};

这个id 就是 信息 类型标示。就是上图的ID。
这个数组 有30项。

点评

https://blog.csdn.net/u014183302/article/details/41289451 是不是这些数值可以友好显示一下。  详情 回复 发表于 2020-12-17 16:18
有一种奇葩的DLL内置调用,私聊发您了,看下。  详情 回复 发表于 2020-11-30 20:28
回复

使用道具 举报

15431#
发表于 2020-11-30 20:28:20 | 只看该作者
mdyblog 发表于 2020-11-30 13:32
struct ata_smart_attribute {
    unsigned char id;
    unsigned short flags;

有一种奇葩的DLL内置调用,私聊发您了,看下。
回复

使用道具 举报

15432#
发表于 2020-11-30 23:49:51 | 只看该作者
  1. ENVI^ ENVIMODE=1
  2. ENVI$ &&NL=0a
  3. ENVI$ &&TAB=09
  4. CALL @MAIN
  5. _SUB MAIN,W800H600
  6.     ENVI &&aTITLE=+80:第1列%&TAB%+80:第2列
  7.     ENVI &&aDATA=测试1%&NL%测试2%&NL%测试3%&NL%测试4%&NL%
  8.     TABL -hfont:20:微软雅黑 -font:20:微软雅黑 aTABL,L18T100W440H100,%&aTITLE%,%&aDATA%,
  9.     //Microsoft YaHei UI
  10.     //Segoe UI
  11.     //微软雅黑
  12.     TABL -hfont:20:Microsoft YaHei UI -font:20:Microsoft YaHei UI bTABL,L18T400W440H100,%&aTITLE%,%&aDATA%,
  13. _END
复制代码


TABL的字体如果带空格就无效了。

点评

1201 另外还支持: TABL -hfont:“20:Microsoft YaHei” UI -font:“20:Microsoft YaHei UI” bTABL,L18T400W440H100,%&aTITLE%,%&aDATA%,  详情 回复 发表于 2020-12-1 08:27
回复

使用道具 举报

15433#
 楼主| 发表于 2020-12-1 08:27:55 | 只看该作者
红毛樱木 发表于 2020-11-30 23:49
TABL的字体如果带空格就无效了。

1201

另外支持:
    TABL -hfont:20:Microsoft YaHei UI -font:“20:Microsoft YaHei UI” bTABL,L18T400W440H100,%&aTITLE%,%&aDATA%,
回复

使用道具 举报

15434#
发表于 2020-12-1 14:32:33 | 只看该作者
本帖最后由 红毛樱木 于 2020-12-1 14:39 编辑

蒙版POS.7z (82.36 KB, 下载次数: 1)

内置PNG资源.zip (1.08 MB, 下载次数: 1)

之前反馈过这两种UI的问题,M大  有空搞了吗
回复

使用道具 举报

15435#
发表于 2020-12-1 16:27:39 来自手机 | 只看该作者

总线类型 BusTypeUnknown = 0   BusTypeScsi=1, BusTypeAtapi, BusTypeAta, BusType1394, BusTypeSsa, BusTypeFibre, BusTypeUsb, BusTypeRAID, BusTypeiScsi, BusTypeSas, BusTypeSata, BusTypeSd, BusTypeMmc, BusTypeVirtual,BusTypeFileBackedVirtual,BusTypeSpaces,BusTypeNvme,BusTypeSCM,BusTypeUfs,BusTypeMax,BusTypeMaxReserved

这个资料可以更新一下
回复

使用道具 举报

15436#
发表于 2020-12-1 19:18:05 | 只看该作者
win10 150%DPI 4K分辨率
SEND -gui
看不到窗口了,估计跑到屏幕外面去了。应该是算桌标算的不对。
回复

使用道具 举报

15437#
发表于 2020-12-1 23:38:32 | 只看该作者
mdyblog 发表于 2020-11-29 20:35
PECMD2012.1.88.05.84Stable-201129.7z\示例\SMART硬盘信息.wcs
测试通过, 512字节信息。

请问能读取硬盘的型号序列号之类的信息吗?
回复

使用道具 举报

15438#
发表于 2020-12-1 23:42:41 | 只看该作者
Anson4 发表于 2020-12-1 23:38
请问能读取硬盘的型号序列号之类的信息吗?
  1. PART -devidx list disk 0,&a
  2. MESS. %&a%
复制代码

点评

借机返回下,硬盘型号比标准名称多出来了下划线_  详情 回复 发表于 2020-12-2 03:02
谢谢!  发表于 2020-12-1 23:45
回复

使用道具 举报

15439#
发表于 2020-12-2 03:02:40 | 只看该作者
本帖最后由 红毛樱木 于 2020-12-2 03:11 编辑

借机反馈下,硬盘型号比标准名称多出来了下划线_

点评

那是空格。 真实的就是_. 自己转吧。  详情 回复 发表于 2020-12-2 03:57
回复

使用道具 举报

15440#
 楼主| 发表于 2020-12-2 03:57:34 | 只看该作者
红毛樱木 发表于 2020-12-2 03:02
借机反馈下,硬盘型号比标准名称多出来了下划线_

那是空格。 真实的就是_. 自己转吧。

点评

这么晚还不睡, 搞搞15455#的吧  详情 回复 发表于 2020-12-2 03:59
回复

使用道具 举报

15441#
发表于 2020-12-2 03:59:27 | 只看该作者
mdyblog 发表于 2020-12-2 03:57
那是空格。 真实的就是_. 自己转吧。

这么晚还不睡,

搞搞15455#的吧
回复

使用道具 举报

15442#
发表于 2020-12-3 17:52:26 | 只看该作者
看看大师的精品
回复

使用道具 举报

15443#
发表于 2020-12-3 21:01:36 | 只看该作者
本帖最后由 红毛樱木 于 2020-12-3 21:16 编辑
  1. ENVI^ ENVIMODE=1
  2. ENVI &Page1_WID=
  3. CALL @MAIN
  4. _SUB MAIN,W800H600
  5.     SWIN -:&Backup_Restore,L0T0W800H600
  6.     ENVI @MAIN.Visible=1
  7.     ENVI @@SENDMSG=%&Page1_WID%:#1
  8. _END

  9. _SUB &Backup_Restore,W800H600,,,,:0xFFFFFF
  10.     ENVI &Page1_WID=%&__WinID%
  11.     LABE -left -trans -vcenter &Status3,L12T338W776H20,
  12.     ENVI @this.MSG=_#1::&&wP,&&lP, THREAD* -WAIT CALL GetImgInfo
  13. _END

  14. _SUB GetImgInfo
  15.     ENVI @&Status3=ABC
  16.     MESS. %&Status3%
  17. _END

复制代码
新BUG,MESS. %&Status3%这里啥信息也没了。
从网盘里“PECMD2012.1.88.05.82Stable-180149测试202011H.7z”这个版本开始处问题了。(精确测试是“PECMD2012.1.88.05.82Stable-180149测试202011E.7z”引入的BUG)

点评

PECMD2012.1.88.05.84Stable-201204.7z  详情 回复 发表于 2020-12-4 05:57
回复

使用道具 举报

15444#
 楼主| 发表于 2020-12-4 05:57:35 | 只看该作者
红毛樱木 发表于 2020-12-3 21:01
新BUG,MESS. %&Status3%这里啥信息也没了。
从网盘里“PECMD2012.1.88.05.82Stable-180149测试202011H.7z ...

PECMD2012.1.88.05.84Stable-201204.7z

点评

收到,测试一波再反馈  详情 回复 发表于 2020-12-4 06:02
回复

使用道具 举报

15445#
发表于 2020-12-4 06:02:05 来自手机 | 只看该作者
mdyblog 发表于 2020-12-4 05:57
PECMD2012.1.88.05.84Stable-201204.7z

收到,测试一波再反馈
回复

使用道具 举报

15446#
发表于 2020-12-5 20:25:54 | 只看该作者
HASH命令不能计算SHA256值,结果是MD5值
以示例HASH $mdyblog.blog.163.com,hPSW,SHA1
SHA1改CRC32 或 MD5 或 SHA1都正常  改SHA256结果为MD5值


还有备注中的变量%PSWh%跟示例里的变量对不上
回复

使用道具 举报

15447#
发表于 2020-12-5 20:53:04 | 只看该作者
HASH
计算文件或字符串CRC32、MD5、SHA1 或 SHA256 校验码。
使用SHA256时,实际返回结果是MD5,M大看一下。
回复

使用道具 举报

15448#
发表于 2020-12-7 09:39:14 | 只看该作者
本帖最后由 红毛樱木 于 2020-12-7 09:52 编辑
  1. THREAD* CALL @MAIN1
  2. CALL @MAIN
  3. _SUB MAIN,L301T0W300H270,MAIN
  4.     ENVI @this.Font=12:微软雅黑
  5.     LABE Label1,L20T10W128H48,请点击"打开"按钮以浏览文件。
  6.     LABE Label2,L20T60W128H48,请点击"打开"按钮以浏览文件。,,,12:微软雅黑
  7.     EDIT Edit1,L20T110W128H48,请点击"打开"按钮以浏览文件,,0x224,,
  8.     EDIT Edit1,L20T170W128H48,请点击"打开"按钮以浏览文件,,0x224,,12:微软雅黑
  9. _END

  10. _SUB MAIN1,L0T0W300H270,MAIN1
  11.     LABE Label1,L20T10W128H48,请点击"打开"按钮以浏览文件。
  12.     LABE Label2,L20T60W128H48,请点击"打开"按钮以浏览文件。,,,12:微软雅黑
  13.     EDIT Edit1,L20T110W128H48,请点击"打开"按钮以浏览文件,,0x224,,
  14.     EDIT Edit1,L20T170W128H48,请点击"打开"按钮以浏览文件,,0x224,,12:微软雅黑
  15. _END
复制代码

这两种设置字体的方法,效果完全不一样,为啥?有没有可能是BUG
Win7x64系统下测试。

回复

使用道具 举报

15449#
发表于 2020-12-13 19:34:17 | 只看该作者
pecmd.exe ,aa文件夹是已知的,bin文件夹数量层级不确认,怎么查找bin目录,找到后复制文件到每个BIN目录下?

d:\aa\bin\ff
d:\aa\bb\bin\dd
d:\aa\bb\cc\bin\dd
d:\aa\bb\cc\1\bin
d:\aa\bb\cc\2\bin
d:\aa\bb\cc\3\bin
d:\aa\bb\cc\......\bin

点评

※前导"@"表示仅搜索目录,"$"搜索目录和文件,省略该前导表示仅搜索文件。 这个是不是你要的? FORX命令  详情 回复 发表于 2020-12-13 21:33
把什么文件复制到bin下?有点饶,没明白过来啥意思  详情 回复 发表于 2020-12-13 20:42
回复

使用道具 举报

15450#
发表于 2020-12-13 20:42:54 来自手机 | 只看该作者
feiyike 发表于 2020-12-13 19:34
pecmd.exe ,aa文件夹是已知的,bin文件夹数量层级不确认,怎么查找bin目录,找到后复制文件到每个BIN目录 ...

把什么文件复制到bin下?有点饶,没明白过来啥意思

点评

怎么去bin目录?  详情 回复 发表于 2020-12-13 20:58
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2026-1-21 11:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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