无忧启动论坛

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

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

    [复制链接]
17581#
 楼主| 发表于 2022-7-31 14:26:52 来自手机 | 只看该作者
那好

点评

Win7任务栏进度条 _SUB TaskBarPer // %__WinID% 进度数 总数 ENVI^ ForceLocal=1 SET$ mpTaskBarlist3=*8 0 SET &CLSCTX_INPROC_SERVER=0x1 SET#$ &CLSID_TaskbarList=44 f3 fd 56 6d fd d0 1  详情 回复 发表于 2022-7-31 21:36
回复

使用道具 举报

17582#
 楼主| 发表于 2022-7-31 21:36:21 | 只看该作者
本帖最后由 mdyblog 于 2022-8-1 08:34 编辑


Win7任务栏进度条(28K版) 示例\TaskbarPbr-tst.WCS

_SUB TaskBarPer  // %__WinID%  进度数  总数
ENVI^ ForceLocal=1
  SET$ mpTaskBarlist3=*8 0
  SET &CLSCTX_INPROC_SERVER=0x1
  SET#$ &CLSID_TaskbarList=44 f3 fd 56   6d fd   d0 11   95 8a  00 60 97 c9 a0 90  //CLSID_TaskbarList={56fdf344-fd6d-11d0-958a-006097c9a090}
  SET#$ &IID_ITaskbarList3=91 FB 1A EA   28 9E   86 4B   90 E9  9E 9F 8A 5E EF AF  //IID_ITaskbarList3={EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}
  lock .ole
  CALL $--ret:* --qd --16  OLE32.DLL,CoCreateInstance,&&hr,*CLSID_TaskbarList,#0,#%CLSCTX_INPROC_SERVER%,*IID_ITaskbarList3,*mpTaskBarlist3
  SET?ptr  mpTaskBarlist3=&&vpTaskBarlist3  //BIN==>字符串形式vpTaskBarlist3
  IFEX  #[ 0<>%&hr% | 0=%vpTaskBarlist3% ], EXIT
  SET?ptr  %vpTaskBarlist3%=&&Vtbl3
  ^SET?ptr  %Vtbl3%=&&Release:(%ptrlen%*2)
  ^SET?ptr  %Vtbl3%=&&HrInit:(%ptrlen%*3)
  ^SET?ptr  %Vtbl3%=&&SetProgressValue:(%ptrlen%*9)
  ^SET?ptr  %Vtbl3%=&&SetProgressState:(%ptrlen%*10)
  CALL $--ret:&&rs --qd#  #,%HrInit%,%vpTaskBarlist3%
  IFEX #[ 0<=%~2 & %~2<=0xF & ''='%~3' ], ^CALL $--ret:&&rs --qd#  #,%SetProgressState%,%vpTaskBarlist3%,%~1,%~2
  IFEX #[ 0<=%~2 & 0<%~3 ],!! ^CALL $--ret:&&ri --qd:##<<  #,%SetProgressValue%,%vpTaskBarlist3%,%~1,%~2,%~3
  CALL $--ret:&&ri --qd#  #,%Release%,%vpTaskBarlist3%  //释放COM
_END

----------------
TaskBarPer   WinID  进度数  总数
TaskBarPer   WinID  0   //取消
TaskBarPer   WinID  1   //滚动
TaskBarPer   WinID  2   //正常颜色
TaskBarPer   WinID  4   //红色
TaskBarPer   WinID  8   //暂停

  
测试
WIN1
_SUB WIN1,W730H254,任务栏进度条演示,
    TIME -t:1 T1,0,TEAM TaskBarPer %__WinID%  40 100|  WAIT 1000| TaskBarPer %__WinID%  80  100|  WAIT 1000| TaskBarPer %__WinID%  100 100|  WAIT 2000| TaskBarPer %__WinID%  0
_END
回复

使用道具 举报

17583#
发表于 2022-8-1 12:47:28 | 只看该作者
pecmd是否有"忘记网络"/获取已输入密码的无线名称/已输入密码的无线直接连接功能
回复

使用道具 举报

17584#
发表于 2022-8-1 12:57:27 | 只看该作者
如何知道每个网卡连接的无线名

点评

已链接的吗? WLAN_AVAILABLE_NETWORK_CONNECTED 不知道是不是PECMD里的bConnectabl,要自己翻微软的官方文档。应该是这个结构体里的_WLAN_AVAILABLE_NETWORK  详情 回复 发表于 2022-8-1 16:03
无线名 ???  详情 回复 发表于 2022-8-1 14:38
PCIP ? IP,MASK,GW,DNS,0?NAME,MAC,LINK MESS [%LINK%] PCIP ? IP,MASK,GW,DNS,1?NAME,MAC,LINK PCIP ? IP,MASK,GW,DNS,2?NAME,MAC,LINK ...  详情 回复 发表于 2022-8-1 14:38
回复

使用道具 举报

17585#
 楼主| 发表于 2022-8-1 14:38:27 | 只看该作者
826773297 发表于 2022-8-1 12:57
如何知道每个网卡连接的无线名

PCIP ? IP,MASK,GW,DNS,0?NAME,MAC,LINK   
MESS  [%LINK%]

PCIP ? IP,MASK,GW,DNS,1?NAME,MAC,LINK
PCIP ? IP,MASK,GW,DNS,2?NAME,MAC,LINK
...   

点评

pcip可以判断是否连接,无法判断到底连接的那个无线  详情 回复 发表于 2022-8-1 21:11
回复

使用道具 举报

17586#
 楼主| 发表于 2022-8-1 14:38:51 | 只看该作者
826773297 发表于 2022-8-1 12:57
如何知道每个网卡连接的无线名

无线名  ???
回复

使用道具 举报

17587#
发表于 2022-8-1 16:03:37 | 只看该作者
826773297 发表于 2022-8-1 12:57
如何知道每个网卡连接的无线名

已链接的吗?

WLAN_AVAILABLE_NETWORK_CONNECTED

不知道是不是PECMD里的bConnectabl,要自己翻微软的官方文档。应该是这个结构体里的_WLAN_AVAILABLE_NETWORK

点评

CALC #Connected=%Flags% & 1 //CALC #HasProfile=%Flags% & 2 参考:https://docs.microsoft.com/zh-cn/windows/win32/api/wlanapi/ns-wlanapi-wlan_available_network?redirectedfrom=MSDN  详情 回复 发表于 2022-8-1 23:10
对,已连接的  详情 回复 发表于 2022-8-1 21:10
回复

使用道具 举报

17588#
发表于 2022-8-1 21:10:35 | 只看该作者
红毛樱木 发表于 2022-8-1 16:03
已链接的吗?

WLAN_AVAILABLE_NETWORK_CONNECTED

对,已连接的
回复

使用道具 举报

17589#
发表于 2022-8-1 21:11:36 | 只看该作者
mdyblog 发表于 2022-8-1 14:38
PCIP ? IP,MASK,GW,DNS,0?NAME,MAC,LINK   
MESS  [%LINK%]

pcip可以判断是否连接,无法判断到底连接的那个无线
回复

使用道具 举报

17590#
 楼主| 发表于 2022-8-1 23:10:42 | 只看该作者
本帖最后由 mdyblog 于 2022-8-1 23:11 编辑
红毛樱木 发表于 2022-8-1 16:03
已链接的吗?

WLAN_AVAILABLE_NETWORK_CONNECTED
ADSL-wlan  ,,?list,&&V
MESS. %&V%

其中:
CALC #Connected=%Flags% & 1  

//CALC #HasProfile=%Flags% & 2  

参考:https://docs.microsoft.com/zh-cn/windows/win32/api/wlanapi/ns-wlanapi-wlan_available_network?redirectedfrom=MSDN


点评

这个很详细,新版有加入吗  详情 回复 发表于 2022-8-2 09:51
回复

使用道具 举报

17591#
发表于 2022-8-2 09:51:14 | 只看该作者
mdyblog 发表于 2022-8-1 23:10
ADSL-wlan  ,,?list,&&V
MESS. %&V%

这个很详细,新版有加入吗

点评

一直都有的。  详情 回复 发表于 2022-8-2 09:55
回复

使用道具 举报

17592#
 楼主| 发表于 2022-8-2 09:55:09 | 只看该作者
826773297 发表于 2022-8-2 09:51
这个很详细,新版有加入吗

一直都有的。

点评

怎么连接已经输入过密码的无线  详情 回复 发表于 2022-8-2 10:00
回复

使用道具 举报

17593#
发表于 2022-8-2 10:00:00 | 只看该作者

怎么连接已经输入过密码的无线

点评

前面有谁问过 判断连接互联网 有API: bool IsConnectedToInternet() { bool bol = false; //是否联网,联网 true,不联网 false CoInitialize(NULL); // 通过NLA接口获取网络状态 IUnknown *pUnknown  详情 回复 发表于 2022-8-2 12:48
28N版 ADSL-wlan SSID,,start  详情 回复 发表于 2022-8-2 12:34
DOT11_SSID dot11Ssid = { 0 }; memcpy(dot11Ssid.ucSSID, account, strlen(account) + 1); dot11Ssid.uSSIDLength = strlen(account); WLAN_CONNECTION_PARAMETERS connectionParameters; memset(&  详情 回复 发表于 2022-8-2 11:19
回复

使用道具 举报

17594#
 楼主| 发表于 2022-8-2 11:19:03 | 只看该作者
本帖最后由 mdyblog 于 2022-8-2 11:58 编辑
826773297 发表于 2022-8-2 10:00
怎么连接已经输入过密码的无线

                DOT11_SSID dot11Ssid = { 0 };
                memcpy(dot11Ssid.ucSSID, account, strlen(account) + 1);
                dot11Ssid.uSSIDLength = strlen(account);

                WLAN_CONNECTION_PARAMETERS connectionParameters;
                memset(&connectionParameters, 0, sizeof(connectionParameters));
                connectionParameters.pDot11Ssid = &dot11Ssid;
                connectionParameters.wlanConnectionMode = wlan_connection_mode_profile;
                connectionParameters.strProfile = wideSsid;   /* clear 可以填NULL */  //Unicode of account(SSID)
                connectionParameters.dot11BssType = dot11_BSS_type_infrastructure;//dot11_BSS_type_independent;   /* msdn说可以dot11_BSS_type_any,实测不行 */
                connectionParameters.pDesiredBssidList = NULL;
                connectionParameters.dwFlags = 0; /* WLAN_CONNECTION_ADHOC_JOIN_ONLY */

                Sleep(300);

                value = WlanConnect(m_handle, &(m_infoList->InterfaceInfo[0].InterfaceGuid),
                        &connectionParameters, NULL);
回复

使用道具 举报

17595#
 楼主| 发表于 2022-8-2 12:34:28 | 只看该作者
826773297 发表于 2022-8-2 10:00
怎么连接已经输入过密码的无线

28N版
ADSL-wlan  SSID,,start

点评

感觉PECMD.EXE本身不用增加功能了, 免得把PECMD.EXE体积搞大了。 直接用API脚本来实际增加功能。  详情 回复 发表于 2022-8-2 12:36
回复

使用道具 举报

17596#
 楼主| 发表于 2022-8-2 12:36:11 | 只看该作者
mdyblog 发表于 2022-8-2 12:34
28N版
ADSL-wlan  SSID,,start

感觉PECMD.EXE本身不用增加功能了, 免得把PECMD.EXE体积搞大了。
直接用API脚本来实际增加功能。

点评

ok,哪一栏是已经输入过密码的标识  详情 回复 发表于 2022-8-2 12:49
回复

使用道具 举报

17597#
 楼主| 发表于 2022-8-2 12:48:41 | 只看该作者
本帖最后由 mdyblog 于 2022-8-2 16:57 编辑
826773297 发表于 2022-8-2 10:00
怎么连接已经输入过密码的无线

前面有谁问过  判断连接互联网
有API:
//#include "netlistmgr.h"
bool IsConnectedToInternet()
{
bool bol = false; //是否联网,联网 true,不联网 false   
CoInitialize(NULL);
//  通过NLA接口获取网络状态
IUnknown *pUnknown = NULL;
INetworkListManager *pNetworkListManager = NULL;
HRESULT Result = CoCreateInstance(CLSID_NetworkListManager, NULL, CLSCTX_ALL, IID_IUnknown, (void **)&pUnknown);
if (SUCCEEDED(Result))
{
  if (pUnknown)
   Result = pUnknown->QueryInterface(IID_INetworkListManager, (void **)&pNetworkListManager);
  if (SUCCEEDED(Result))
  {
   VARIANT_BOOL IsConnect = VARIANT_FALSE;
   if (pNetworkListManager)
    Result = pNetworkListManager->get_IsConnectedToInternet(&IsConnect);
   if (SUCCEEDED(Result))
   {
    bol = (IsConnect == VARIANT_TRUE) ? true : false;
   }
  }
  if (pNetworkListManager)
   pNetworkListManager->Release();
}
if (pUnknown)
  pUnknown->Release();
CoUninitialize();
return bol;
}

可参照 TaskbarPbr-tst.wcs修改。

另外 判断是否有网络(不一定连上互联网)
    Result = pNetworkListManager->get_IsConnected
(&IsConnect);

参考资料:  https://docs.microsoft.com/zh-cn/windows/win32/api/netlistmgr/nf-netlistmgr-inetworklistmanager-get_isconnected

另外拷贝一份 VS2010-VC的头文件, 方便找数据结构,API,常数。

点评

我放弃使用dpi了,采用盲猜模式,依赖更少  详情 回复 发表于 2022-8-2 12:51
回复

使用道具 举报

17598#
发表于 2022-8-2 12:49:48 | 只看该作者
mdyblog 发表于 2022-8-2 12:36
感觉PECMD.EXE本身不用增加功能了, 免得把PECMD.EXE体积搞大了。
直接用API脚本来实际增加功能。

ok,哪一栏是已经输入过密码的标识

点评

hasProfile  详情 回复 发表于 2022-8-2 12:51
回复

使用道具 举报

17599#
 楼主| 发表于 2022-8-2 12:51:29 | 只看该作者
826773297 发表于 2022-8-2 12:49
ok,哪一栏是已经输入过密码的标识

hasProfile
CALC #HasProfile=%Flags% & 2  

点评

好的  详情 回复 发表于 2022-8-2 12:52
回复

使用道具 举报

17600#
发表于 2022-8-2 12:51:33 | 只看该作者
mdyblog 发表于 2022-8-2 12:48
前面有谁问过  判断连接互联网
有API:
bool IsConnectedToInternet()

我放弃使用dpi了,采用盲猜模式,依赖更少

点评

没事。 发上来。 有人用API写的位函数的。  详情 回复 发表于 2022-8-2 12:53
回复

使用道具 举报

17601#
发表于 2022-8-2 12:52:52 | 只看该作者
mdyblog 发表于 2022-8-2 12:51
hasProfile
CALC #HasProfile=%Flags% & 2

好的
回复

使用道具 举报

17602#
 楼主| 发表于 2022-8-2 12:53:23 | 只看该作者
826773297 发表于 2022-8-2 12:51
我放弃使用dpi了,采用盲猜模式,依赖更少

没事。
发上来。 有人用API写的位函数的。

点评

有现成的接口吗  详情 回复 发表于 2022-8-2 12:59
我发现微软也是在盲猜,但是他不太愿意承认  详情 回复 发表于 2022-8-2 12:57
回复

使用道具 举报

17603#
发表于 2022-8-2 12:57:02 | 只看该作者
mdyblog 发表于 2022-8-2 12:53
没事。
发上来。 有人用API写的位函数的。

我发现微软也是在盲猜,但是他不太愿意承认
回复

使用道具 举报

17604#
发表于 2022-8-2 12:58:20 | 只看该作者
pecmd功能已经很多了。测试版都测试了小半年了。
稳定了也该转正了。

点评

嗯  详情 回复 发表于 2022-8-2 14:19
回复

使用道具 举报

17605#
发表于 2022-8-2 12:59:40 | 只看该作者
mdyblog 发表于 2022-8-2 12:53
没事。
发上来。 有人用API写的位函数的。

有现成的接口吗

点评

函数 IsConnectInternet // BICon {28o版}\示例\IsConnectInternet.wcs 含文档 MSDN文档传到网盘了,方便找调用API需要的资料 ======================================= ENVI^ ForceLocal=1 IsConnectInt  详情 回复 发表于 2022-8-2 20:14
回复

使用道具 举报

17606#
 楼主| 发表于 2022-8-2 14:19:05 来自手机 | 只看该作者
freesoft00 发表于 2022-8-2 12:58
pecmd功能已经很多了。测试版都测试了小半年了。
稳定了也该转正了。

回复

使用道具 举报

17607#
 楼主| 发表于 2022-8-2 20:14:13 | 只看该作者
本帖最后由 mdyblog 于 2022-8-2 22:23 编辑

函数
IsConnectInternet  // BICon [bLCon]
目前用的简化写法,需要 {28o版} PECMD。
{28o版}\示例\IsConnectInternet.wcs  含文档
MSDN文档传到网盘了,方便找调用API需要的资料
=======================================
ENVI^ ForceLocal=1

IsConnectInternet &&InternetRet &&LocalRet
MESS Internet[%&InternetRet%]  LocalNet[%LocalRet%]

_SUB IsConnectInternet  // BICon [bLCon]
  SET &bIntnet=
  SET &bLConnect=
  SET$ &mpNetworkListManager=*8 0
  SET &CLSCTX_INPROC_SERVER=0x1
  CALC #&&CLSCTX_ALL=1|2|4|0x10
  SET#$ &CLSID_NetworkListManager=01 0C B0 DC  0F 57  9B 4A  8D 69  19 9F DB A5 72 3B //{DCB00C01-570F-4A9B-8D69-199FDBA5723B}
  SET#$ &IID_INetworkListManager=00 00 B0 DC  0F 57 9B 4A  8D 69  19 9F DB A5 72 3B  //{DCB00000-570F-4A9B-8D69-199FDBA5723B}
  SET &pNetworkListManager=0

  {*
    lock .ole
    CALL $--ret:* --qd --16  OLE32.DLL,CoCreateInstance,&&rs,*CLSID_NetworkListManager,#0,#%CLSCTX_ALL%,*IID_INetworkListManager,*mpNetworkListManager
    IFEX  #[ 0<>%&rs% ], EXIT -
    SET &get_IsConnectedToInternet=11  //函数序号
    SET &get_IsConnected=12  //函数序号
  
    SET#$  &IsConnect=*8 0
    FIND $%~1<>,
    {* ^CALL $--ret:&&rs --qd*  #,*&mpNetworkListManager.%get_IsConnectedToInternet%,IsConnect
        @IFEX #%rs%=0,!! @IFEX #%&IsConnect?short:0%<>0, SET bIntnet=1! SET SET bIntnet=0
    }
    FIND $%~2<>,
    {* CALL $--ret:&&rs --qd*  #,*&mpNetworkListManager.%get_IsConnected%,IsConnect
      @IFEX #%rs%=0,!! @IFEX #%&IsConnect?short:0%<>0, SET bIntnet=1! SET SET bIntnet=0
    }
    CALL $--ret:&&rs  #,*&mpNetworkListManager.2 //2:Release() 释放COM
  }
  ENVI-ret %~1=%bIntnet%
  FIND $%~2<>, ENVI-ret %~2=%bLConnect%
_END


点评

这个是很久之前就想要的COM接口调用?  详情 回复 发表于 2022-8-3 00:41
好的,我记录一下  详情 回复 发表于 2022-8-2 20:35
回复

使用道具 举报

17608#
发表于 2022-8-2 20:35:51 | 只看该作者
mdyblog 发表于 2022-8-2 20:14
函数
IsConnectInternet  // BICon
目前用的简化写法,需要 {28o版} PECMD。

好的,我记录一下
回复

使用道具 举报

17609#
发表于 2022-8-2 21:45:52 | 只看该作者
本帖最后由 Anson4 于 2022-8-2 21:51 编辑

这几天发现一个问题:当 TABL 的表头和内容分开各自设置对齐之后,就不能用鼠标调整列宽了。应该是从 PECMD2012.1.88.05.88Stable-220527G 开始的

_TABL_TEST_COLUMN.zip (1.08 KB, 下载次数: 3)

点评

28P  详情 回复 发表于 2022-8-2 23:21
回复

使用道具 举报

17610#
 楼主| 发表于 2022-8-2 23:21:30 | 只看该作者
Anson4 发表于 2022-8-2 21:45
这几天发现一个问题:当 TABL 的表头和内容分开各自设置对齐之后,就不能用鼠标调整列宽了。应该是从 PECMD ...

28P

点评

问题已解决,感谢更新! 不过,此时发现了另一个问题:当 EDIT 控件设置了背景色时,如果使用某些字体比如微软雅黑或者 Segoe UI,会出现背景色的两端超出边框的现象,请看下图中的红框位置。 [attachimg]505489[/  详情 回复 发表于 2022-8-3 00:21
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-1 18:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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