无忧启动论坛

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

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

    [复制链接]
17581#
发表于 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
回复

使用道具 举报

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

WLAN_AVAILABLE_NETWORK_CONNECTED

对,已连接的
回复

使用道具 举报

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

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

使用道具 举报

17584#
 楼主| 发表于 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
回复

使用道具 举报

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

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

点评

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

使用道具 举报

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

一直都有的。

点评

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

使用道具 举报

17587#
发表于 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
回复

使用道具 举报

17588#
 楼主| 发表于 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);
回复

使用道具 举报

17589#
 楼主| 发表于 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
回复

使用道具 举报

17590#
 楼主| 发表于 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
回复

使用道具 举报

17591#
 楼主| 发表于 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
回复

使用道具 举报

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

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

点评

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

使用道具 举报

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

hasProfile
CALC #HasProfile=%Flags% & 2  

点评

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

使用道具 举报

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

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

点评

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

使用道具 举报

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

好的
回复

使用道具 举报

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

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

点评

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

使用道具 举报

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

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

使用道具 举报

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

点评

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

使用道具 举报

17599#
发表于 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
回复

使用道具 举报

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

回复

使用道具 举报

17601#
 楼主| 发表于 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
回复

使用道具 举报

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

好的,我记录一下
回复

使用道具 举报

17603#
发表于 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
回复

使用道具 举报

17604#
 楼主| 发表于 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
回复

使用道具 举报

17605#
发表于 2022-8-3 00:21:10 | 只看该作者
本帖最后由 Anson4 于 2022-8-3 00:23 编辑

问题已解决,感谢更新!
不过,此时发现了另一个问题:当 EDIT 控件设置了背景色时,如果使用某些字体比如微软雅黑或者 Segoe UI,会出现背景色的两端超出边框的现象,请看下图中的红框位置。这个问题在 PECMD2012.1.88.05.88Stable-220527G 中是不存在的。



点评

最简单演示代码  详情 回复 发表于 2022-8-3 08:11
回复

使用道具 举报

17606#
发表于 2022-8-3 00:41:42 | 只看该作者
本帖最后由 红毛樱木 于 2022-8-3 00:56 编辑
mdyblog 发表于 2022-8-2 20:14
函数
IsConnectInternet  // BICon
目前用的简化写法,需要 {28o版} PECMD。

这个是很久之前就想要的COM接口调用?
------------------------
里面的格式备注,是否能更详细些?


------------------------
https://docs.microsoft.com/zh-cn ... rk-list-manager-api
翻到了一份官方示例

点评

对。 CALL $... #,*&COM指针PE变量.COM函数索引,COM参数1,COM参数2... 或 CALL $... #,COM指针PE数值.COM函数索引,COM参数1,COM参数2... SET?ptr &COM指针PE变量=COM指针PE数值 //2进制转可见的数  详情 回复 发表于 2022-8-3 08:09
回复

使用道具 举报

17607#
 楼主| 发表于 2022-8-3 08:09:51 | 只看该作者
本帖最后由 mdyblog 于 2022-8-3 08:23 编辑
红毛樱木 发表于 2022-8-3 00:41
这个是很久之前就想要的COM接口调用?
------------------------
里面的格式备注,是否能更详细些?

对。

CALL $...    #,*&COM指针PE变量.COM函数索引,COM参数1,COM参数2...

CALL $...    #,COM指针PE数值.COM函数索引,COM参数1,COM参数2...
SET?ptr   &COM指针PE变量=COM指针PE数值   //2进制转可见的数字串, 提前翻译出来。所以后者不用加个*了。

查找 SDK文档的 COM结构的 C结构说明, 会列出全部 函数, 索引从0 开始。
注意, 参数按C++格式写, 默认的THis指针, 不用再写了,方便,PECMD自己处理。

    SET &get_IsConnectedToInternet=11  //函数序号
   
    CALL $--ret:&&rs --qd*  #,*&mpNetworkListManager.%get_IsConnectedToInternet%,IsConnect


其实这不仅针针对COM, 适用 所有C++ 虚函数调用。COM均是虚函数。


回复

使用道具 举报

17608#
 楼主| 发表于 2022-8-3 08:11:34 | 只看该作者
Anson4 发表于 2022-8-3 00:21
问题已解决,感谢更新!
不过,此时发现了另一个问题:当 EDIT 控件设置了背景色时,如果使用某些字体比 ...

最简单演示代码
回复

使用道具 举报

17609#
发表于 2022-8-3 10:10:04 | 只看该作者
本帖最后由 Anson4 于 2022-8-3 10:24 编辑
mdyblog 发表于 2022-8-3 08:11
最简单演示代码

使用字体 Segoe UI 或者 微软雅黑 后:
1. LIST 控件的高度变大
2. EDIT 控件的背景色左右两端超出边界线
_TABL_TEST_COLUMN_EDIT.zip (1.26 KB, 下载次数: 5)

点评

28G版 -venter:-6 表示 预留字体高度的1/6.  详情 回复 发表于 2022-8-3 12:33
哦。 和姿态有关 怪不得, 我自己的代码复现不了。  详情 回复 发表于 2022-8-3 10:25
回复

使用道具 举报

17610#
 楼主| 发表于 2022-8-3 10:25:16 | 只看该作者
本帖最后由 mdyblog 于 2022-8-3 10:29 编辑
Anson4 发表于 2022-8-3 10:10
使用字体 Segoe UI 或者 微软雅黑 后:
1. LIST 控件的高度变大
2. EDIT 控件的背景色左右两端超出边界 ...

哦。 和 字体 有关
怪不得, 我自己的代码复现不了。
与 背景色 无关

ENVI @This.Font=9:宋体
就不会。
这个字体 有外溢

点评

但是有些版本不会出现这个现象,比如 PECMD2012.1.88.05.88Stable-220527G  详情 回复 发表于 2022-8-3 10:37
还有个问题让我很是困扰:TABL 的内容偶尔会出现某一行内容乱码,字体变形等现象,没有发现什么规律,也没办法重现。 [attachimg]505503[/attachimg]  详情 回复 发表于 2022-8-3 10:35
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 12:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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