精华内容
下载资源
问答
  • Windows列表框类

    千次阅读 2015-12-28 22:21:26
    列表框就是像酷狗播放器歌曲列表那种,一首首歌相当于一个个项目,可以单选一个也可以多选项目,选中的时候项目会高亮,这是自动的,无需自己设置当一个项目被选中的时候,列表框控件便发送WM_COMMAND消息到其父窗口...

    列表框就是像酷狗播放器歌曲列表那种,一首首歌相当于一个个项目,可以单选一个也可以多选项目,选中的时候项目会高亮,这是自动的,无需自己设置

    当一个项目被选中的时候,列表框控件便发送WM_COMMAND消息到其父窗口,然后父窗口确定哪个项目被选中

    单选列表框: 用户可以按动空格键选择光标所在的项目。方向键可以移动光标和当前的选择,并可以滚动列表框中的内容

    多选框列表: 空格建用于切换光标所在项目的选择状态,可以同时选择多个项目。

    一般多选框不常见,主要还是单选框。
    创建一个listbox(空项目)
    例如:

       case WM_CREATE:
       hListBox=CreateWindow(L"listbox",L"",WS_CHILD|WS_VISIBLE|LBS_STANDARD
            ,20,20,200,400,hwnd,(HMENU)1,hInst,0);
    
            break;
       case WM_SETFOCUS:
           SetFocus(hListBox);
            break;

    效果如图:

    列表框常用样式:
    LBS_NOTIFY 使父窗口收到从listbox发来的WM_COMMAND消息
    LBS_SORT 对项目进行排序
    LBS_MULTIPLESEL 创建一个多选listbox
    LBS_NOREDRAW 使listbox不更新列表
    LBS_STANDARD 标准样式
    窗口样式:
    WS_SIZEBOX和WS_CAPTION :可以让用户移动listbox和改变大小尺寸

    计算列表框的高度:一个字符的高度乘以出现在视图中项目的数量

    向列表框中添加字符串:
    如果使用, LBS_SORT样式,则直接插入字符串即可,会自动排序的
    SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM)szString);

    如果没有使用LBS_SORT样式,则可以在指定位置插入字符串
    SendMessage(hListBox,LB_INSERTSTRING,iIndex,(LPARAM),szString);

    iIndex的计数是从0开始的,从顶部开始算起0,1,2,…
    例如:

     case WM_CREATE:
    
               hListBox=CreateWindow(L"listbox",L"",WS_CHILD|WS_VISIBLE|LBS_STANDARD
                   ,20,20,200,400,hwnd,(HMENU)1,hInst,0);
    
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串1");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串2");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串3");
               SendMessage(hListBox, LB_INSERTSTRING, 3,(LPARAM)L"字符串4");
            break;
    
    
           case WM_SETFOCUS:
               SetFocus(hListBox);
               break;

    效果如图:

    前面三个字符串是添加进去自动排序的,最后一个是插入进去的,因为前面三个索引是0,1,2,所以把最后一个字符串插在3位置就是第三个字符串的后面

    再如:

    SendMessage(hListBox, LB_INSERTSTRING, 0,(LPARAM)L"字符串4");

    效果如图:

    位置0就 是插在第一个前面

    再如:

    SendMessage(hListBox, LB_INSERTSTRING, -1,(LPARAM)L"字符串4");

    效果如图:

    索引是-1就表示直接插入末尾

    再如:

    SendMessage(hListBox, LB_INSERTSTRING, 4,(LPARAM)L"字符串4");

    效果如图:

    如果索引的值大于现有的项目数则插入失败

    在指定索引位置删除一个字符串
    例如:

     SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串1");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串2");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串3");
               SendMessage(hListBox, LB_INSERTSTRING, 3,(LPARAM)L"字符串4");
               SendMessage(hListBox, LB_DELETESTRING, 2, 0);

    效果如图:

    删除了索引2的字符串

    清除listbox中的所有项目
    例如:

     SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串1");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串2");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串3");
               SendMessage(hListBox, LB_INSERTSTRING, 3,(LPARAM)L"字符串4");
               SendMessage(hListBox, LB_RESETCONTENT, 0, 0);

    效果如图:

    当有大量项目被添加进去的时候要暂时抑制listbox的自我更新,等添加完之后再更新
    关闭重绘标志
    SendMessage(hListBox,WM_SETREDRAW,FALSE,0);
    开启重绘标志
    SendMessage(hListBox,WM_SETREDRAW,TRUE,0);

    项目的选择和提取:

    获取listbox中的项目个数
    iCount=SendMessage(hListBox,LB_GETCOUNT,0,0);

    突出默认选项
    SendMessage(hListBox,LB_SETCURSEL,iIndex,0);
    例如:

    SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串1");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串2");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串3");
               SendMessage(hListBox, LB_INSERTSTRING, 3,(LPARAM)L"字符串4");
               SendMessage(hListBox, LB_SETCURSEL, 2, 0);

    效果如图:

    根据起始字符选择一个项目
    参数iIndex表示从哪里开始匹配
    如果索引为-1表示从顶端开始查找
    返回匹配处的索引值
    SendMessage(hListBox, LB_SELECTSTRING, iIndex, (LPARAM)szSearchString);
    例如:

     SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"符串1");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"符串2");
               SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)L"字符串3");
               SendMessage(hListBox, LB_INSERTSTRING, 3, (LPARAM)L"字符串4");
             int iIndex = SendMessage(hListBox, LB_SELECTSTRING, -1, (LPARAM)L"字");
             SendMessage(hListBox, LB_SETCURSEL, iIndex, 0);

    效果如图:

    获取当前选中项的索引值,在WM_COMMAND消息中使用
    iIndex=SendMessage(hListBox,LB_GETCURSEL,0,0);
    如果没有项目被选中,返回LB_ERR

    获取列表框中任何字符串的长度
    iLength=SendMessage(hListBox,LB_GETTEXTLEN,iIndex,0);
    可以同时复制一个文本到缓冲区中
    iLength=SendMessage(hListBox,LB_GETTEXTLEN,iIndex,(LPARAM)szBuffer);

    列表框的消息:
    LOWORD(wParam) 子窗口ID
    HIWORD(wParam) 通知码
    lParam 子窗口句柄

    通知码:

    #define LBN_ERRSPACE        (-2)//表明listbox耗尽空间
    #define LBN_SELCHANGE       1 //表明当前选择发生变化
    #define LBN_DBLCLK          2 //鼠标双击
    #define LBN_SELCANCEL       3
    #define LBN_SETFOCUS        4
    #define LBN_KILLFOCUS       5

    例如:

    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 分析菜单选择: 
            switch (wmId)
            {
            case 1:
                if (HIWORD(wParam) == LBN_SELCHANGE)
                    MessageBox(nullptr, L"状态发生了改变", L"", 0);
                if (HIWORD(wParam) == LBN_DBLCLK)
                    MessageBox(nullptr, L"双击了这个项目", L"", 0);
    
                break;
    
            default:
                break;
            }
        }
            break;

    效果如图:

    列出文件:
    列表框最强大最重要的消息LB_DIR

    SendMessage(hListBox,LB_DIR,iAttr,(LPARAM)szFileSpec);

    iAttr参数是文件属性代码,文件属性代码的最低字节可以是下表中数值的组合:
    iAttr 值 属性
    DDL_READWRITE 0x0000 普通文件
    DDL_READONLY 0x0001 只读文件
    DDL_HIDDEN 0x0002 隐藏文件
    DDL_SYSTEM 0x0004 系统文件
    DDL_DIRECTORY 0x0010 子目录
    DDL_ARCHIVE 0x0020 归档位设立的档案

    高字节提供了一些对所要求项目的附加控制:
    iAttr 值 属性
    DDL_DRIVES 0x4000 包括磁盘驱动器句柄
    DDL_EXCLUSIVE 0x8000 互斥搜索

    DDL:“dialog directory list”(对话框目录列表)

    列出某个文件
    例如:

    case WM_CREATE:
           {
               hListBox = CreateWindow(L"listbox", L"", WS_CHILD |WS_VISIBLE | WS_SIZEBOX|WS_CAPTION|LBS_STANDARD
                   , 20, 20, 200, 400, hwnd, (HMENU)1, hInst, 0);
    
               if (LB_ERR == SendMessage(hListBox, LB_DIR, DDL_READWRITE|DDL_DIRECTORY, (LPARAM)L"F:\\Windows程序设计\\API实例"))
               {
                   dwError = GetLastError();
               }
    
           }
            break;

    效果如图:

    如果你要列出的文件是个子目录而不是一个单文件就必须加上DDL_DIRECTORY,发一次消息只能列出一个文件,,所以你可以循环列出所有文件。

    展开全文
  • windows列表框控件中能不能显示一个bitmap位图图片?列表框怎么显示bitmap图片?
  • windows 漏洞列表

    2017-10-26 15:59:00
    漏洞列表#Security Bulletin #KB #Description #Operating SystemCVE-2017-0213 [Windows COM Elevation of Privilege Vulnerability] (windows 10/8.1/7/2016/2010/2008)MS17-010 [KB4013389] [Windows ...

    漏洞列表
     
    #Security Bulletin   #KB     #Description    #Operating System
     
    CVE-2017-0213  [Windows COM Elevation of Privilege Vulnerability]  (windows 10/8.1/7/2016/2010/2008)
    MS17-010  [KB4013389]  [Windows Kernel Mode Drivers]  (windows 7/2008/2003/XP)
    MS16-135  [KB3199135]  [Windows Kernel Mode Drivers]  (2016)
    MS16-098  [KB3178466]  [Kernel Driver]  (Win 8.1)
    MS16-075  [KB3164038]  [Hot Potato]  (2003/2008/7/8/2012)
    MS16-032  [KB3143141]  [Secondary Logon Handle]  (2008/7/8/10/2012)
    MS16-016  [KB3136041]  [WebDAV]  (2008/Vista/7)
    MS15-097  [KB3089656]  [remote code execution]  (win8.1/2012)
    MS15-076  [KB3067505]  [RPC]  (2003/2008/7/8/2012)
    MS15-077  [KB3077657]  [ATM]  (XP/Vista/Win7/Win8/2000/2003/2008/2012)
    MS15-061  [KB3057839]  [Kernel Driver]  (2003/2008/7/8/2012)
    MS15-051  [KB3057191]  [Windows Kernel Mode Drivers]  (2003/2008/7/8/2012)
    MS15-010  [KB3036220]  [Kernel Driver]  (2003/2008/7/8)
    MS15-015  [KB3031432]  [Kernel Driver]  (Win7/8/8.1/2012/RT/2012 R2/2008 R2)
    MS15-001  [KB3023266]  [Kernel Driver]  (2008/2012/7/8)
    MS14-070  [KB2989935]  [Kernel Driver]  (2003)
    MS14-068  [KB3011780]  [Domain Privilege Escalation]  (2003/2008/2012/7/8)
    MS14-058  [KB3000061]  [Win32k.sys]  (2003/2008/2012/7/8)
    MS14-040  [KB2975684]  [AFD Driver]  (2003/2008/2012/7/8)
    MS14-002  [KB2914368]  [NDProxy]  (2003/XP)
    MS13-053  [KB2850851]  [win32k.sys]  (XP/Vista/2003/2008/win 7)
    MS13-046  [KB2840221]  [dxgkrnl.sys]  (Vista/2003/2008/2012/7)
    MS13-005  [KB2778930]  [Kernel Mode Driver]  (2003/2008/2012/win7/8)
    MS12-042  [KB2972621]  [Service Bus]  (2008/2012/win7)
    MS12-020  [KB2671387]  [RDP]  (2003/2008/7/XP)
    MS11-080  [KB2592799]  [AFD.sys]  (2003/XP)
    MS11-062  [KB2566454]  [NDISTAPI]  (2003/XP)
    MS11-046  [KB2503665]  [AFD.sys]  (2003/2008/7/XP)
    MS11-011  [KB2393802]  [kernel Driver]  (2003/2008/7/XP/Vista)
    MS10-092  [KB2305420]  [Task Scheduler]  (2008/7)
    MS10-065  [KB2267960]  [FastCGI]  (IIS 5.1, 6.0, 7.0, and 7.5)
    MS10-059  [KB982799]   [ACL-Churraskito]  (2008/7/Vista)
    MS10-048  [KB2160329]  [win32k.sys]  (XP SP2 & SP3/2003 SP2/Vista SP1 & SP2/2008 Gold & SP2 & R2/Win7)
    MS10-015  [KB977165]   [KiTrap0D]  (2003/2008/7/XP)
    MS09-050  [KB975517]   [Remote Code Execution]  (2008/Vista)
    MS09-020  [KB970483]   [IIS 6.0]  (IIS 5.1 and 6.0)
    MS09-012  [KB959454]   [Chimichurri]  (Vista/win7/2008/Vista)
    MS08-068  [KB957097]   [Remote Code Execution]  (2000/XP)
    MS08-067  [KB958644]   [Remote Code Execution]  (Windows 2000/XP/Server 2003/Vista/Server 2008)
    MS08-025  [KB941693]   [Win32.sys]  (XP/2003/2008/Vista)
    MS06-040  [KB921883]   [Remote Code Execution]  (2003/xp/2000)
    MS05-039  [KB899588]   [PnP Service]  (Win 9X/ME/NT/2000/XP/2003)
    MS03-026  [KB823980]   [Buffer Overrun In RPC Interface]  (/NT/2000/XP/2003)

    项目地址:https://github.com/SecWiki/windows-kernel-exploits

    转载于:https://www.cnblogs.com/lic1005/p/7737262.html

    展开全文
  • 获取WINDOWS打印机列表

    千次阅读 2019-01-08 06:54:20
    获取WINDOWS打印机列表 如何知道WINDOWS已经安装了哪些打印机? 1) usesVcl.Printers 2) Printer.Printers // property Printers: TStrings read GetPrinters; 3)  

    获取WINDOWS打印机列表

    如何知道WINDOWS已经安装了哪些打印机?

    1)

    uses
    Vcl.Printers

    2)

    Printer.Printers  // property Printers: TStrings read GetPrinters;

    3)

     

    展开全文
  • windows访问控制列表

    千次阅读 2018-12-03 11:06:37
    windows访问控制列表 --ACL(Access Control List) 1、定义   ACL是一个windows中的表示用户(组)权限的列表。  Access Control List(ACL) Access Control Entry(ACE) ...     ...

    转:https://www.cnblogs.com/the-owl/p/5649801.html

    windows访问控制列表 --ACL(Access Control List)

    1、定义  

      ACL是一个windows中的表示用户(组)权限的列表。

      Access Control List(ACL)

    Access Control Entry(ACE)
    ...

     

     

     

    2、分类

      ACL分为两类

        1,Discretionary Access Control List (DACL)  自由访问控制列表

        2,System Access Control List (SACL) 系统访问控制列表

    DACL是 安全对象(securable object) 的一个属性(我的理解),用来表示 安全对象 的访问权限的列表。

      当一个进程试图访问一个安全对象时,系统会检查该对向的DACL中的ACE。

      如果该对象没有DACL,允许任何访问。

      如果有DACL,但是其中没有ACE,拒绝所有访问。

      DACL控制访问控制的详细原理 https://msdn.microsoft.com/en-us/library/aa446683(v=vs.85).aspx

    SACL是系统中的一个列表,用来记录指定用户(组)、指定类型的访问的访问结果,并记录。

    3、操作

      为了保证ACL语法正确,ACL的修改必须通过指定的函数,不能直接修改。

      1,描述ACE的结构体

    typedef struct _EXPLICIT_ACCESS {
      DWORD       grfAccessPermissions;
      ACCESS_MODE grfAccessMode;
      DWORD       grfInheritance;
      TRUSTEE     Trustee;
    } EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;

      2,查看某用户访问权限

    (1)调用 GetSecurityInfo 或 GetNamedSecurityInfo 得到对象的ACL(可选返回 DACL或 SACL)

    DWORD WINAPI GetSecurityInfo(
      _In_      HANDLE               handle,
      _In_      SE_OBJECT_TYPE       ObjectType,
      _In_      SECURITY_INFORMATION SecurityInfo,
      _Out_opt_ PSID                 *ppsidOwner,
      _Out_opt_ PSID                 *ppsidGroup,
      _Out_opt_ PACL                 *ppDacl,
      _Out_opt_ PACL                 *ppSacl,
      _Out_opt_ PSECURITY_DESCRIPTOR *ppSecurityDescriptor
    );
    DWORD WINAPI GetNamedSecurityInfo(
      _In_      LPTSTR               pObjectName,
      _In_      SE_OBJECT_TYPE       ObjectType,
      _In_      SECURITY_INFORMATION SecurityInfo,
      _Out_opt_ PSID                 *ppsidOwner,
      _Out_opt_ PSID                 *ppsidGroup,
      _Out_opt_ PACL                 *ppDacl,
      _Out_opt_ PACL                 *ppSacl,
      _Out_opt_ PSECURITY_DESCRIPTOR *ppSecurityDescriptor
    );

    (2)调用 GetEffectiveRightsFromAcl ,将(1)中的ACL指针作为参数,得到某用户的访问权限

    DWORD WINAPI GetEffectiveRightsFromAcl(
      _In_  PACL         pacl,
      _In_  PTRUSTEE     pTrustee,
      _Out_ PACCESS_MASK pAccessRights
    );

    3,添加ACE到某个对象的ACL

        (1)调用 GetSecurityInfo 或 GetNamedSecurityInfo 从对象的安全描述符中(security descriptor)得到ACL(可选返回 DACL或 SACL)

        (2)调用 BuildExplicitAccessWithName 初始化一个ACE(也可以一个个属性赋值初始化ACE),若有多个要加入ACL,则将_EXPLICIT_ACCESS构造数组

    VOID WINAPI BuildExplicitAccessWithName(
      _Inout_  PEXPLICIT_ACCESS pExplicitAccess,  //传入待初始化的_EXPLICIT_ACCESS,初始化后返回
      _In_opt_ LPTSTR           pTrusteeName,
      _In_     DWORD            AccessPermissions,
      _In_     ACCESS_MODE      AccessMode,
      _In_     DWORD            Inheritance
    );

    (3)调用 SetEntriesInAcl ,将自己要加入的ACE数组(_EXPLICIT_ACCESS数组)并入一个ACL

    DWORD WINAPI SetEntriesInAcl(
      _In_     ULONG            cCountOfExplicitEntries,  //数组中元素个数
      _In_opt_ PEXPLICIT_ACCESS pListOfExplicitEntries,   //数组指针
      _In_opt_ PACL             OldAcl,            //若为空,则构造一个新的ACL;若不为空,则将该ACE(数组)并入该ACL
      _Out_    PACL             *NewAcl
    );

    (4)调用 SetSecurityInfo 或 SetNamedSecurityInfo,将自定义的ACL并入该对象的安全描述符。

    DWORD WINAPI SetNamedSecurityInfo(
      _In_     LPTSTR               pObjectName,
      _In_     SE_OBJECT_TYPE       ObjectType,
      _In_     SECURITY_INFORMATION SecurityInfo,
      _In_opt_ PSID                 psidOwner,
      _In_opt_ PSID                 psidGroup,
      _In_opt_ PACL                 pDacl,
      _In_opt_ PACL                 pSacl
    );
    DWORD WINAPI SetSecurityInfo(
      _In_     HANDLE               handle,
      _In_     SE_OBJECT_TYPE       ObjectType,
      _In_     SECURITY_INFORMATION SecurityInfo,
      _In_opt_ PSID                 psidOwner,
      _In_opt_ PSID                 psidGroup,
      _In_opt_ PACL                 pDacl,
      _In_opt_ PACL                 pSacl
    );

     

      参考

      ACL创建修改 https://msdn.microsoft.com/en-us/library/aa446596(v=vs.85).aspx

      ACL查看 https://msdn.microsoft.com/en-us/library/aa446659(v=vs.85).aspx

      原文 https://msdn.microsoft.com/en-us/library/aa374872(VS.85).aspx

    展开全文
  • Windows 跳转列表是自 Windows 7 时代就带来的功能,这一功能是跟随 Windows 7 的任务栏而发布的。当时应用程序要想用上这样的功能需要调用 shell 提供的一些 API。 然而在 WPF 程序中使用 Windows 跳转列表功能非常...
  • Windows获取窗口列表

    千次阅读 2018-04-17 20:47:41
    Windows 10 Visual Studio 2017 Source #include <Windows.h> #include <Dwmapi.h> #include <iostream> #pragma comment(lib, "dwmapi.lib") int ...
  • 命令 管理员下cmd 命令sc 出现命令列表 sc delete (服务列表中名称) 例如: sc delete tomcatbcma 返回 success 即删除成功。 没有命令权限 使用管理员命令即可。
  • Awesome-WindowsWindows平台精选软件工具列表虽然 Windows 系统发展了这么多年,但是除了必备的工具之外,那些好用且实用的软件其实还是屈指可数的,今天发现了一个...
  • windows获取网卡列表

    千次阅读 2018-05-06 18:53:03
    Windows API的这些函数,有一个共同点。一般都是先传入一个NULL指针,此时函数返回一个长度值,告诉你需要申请多大的空间才够用。然后再new一个这么大的空间,去获取有效的值。 int WIN_GetAdapter(WIN_AdapterList...
  • windows访问控制列表ACL

    千次阅读 2019-07-15 12:56:32
    文章目录术语定义分类DACLSACL安全对象(so) &...windows访问控制列表 --ACL(Access Control List) 关于授权(authorization) 与 访问控制(Acess Control) 微软官网详细介绍: https://docs.microsoft.com/zh-cn...
  • #include <windows.h> #include <iostream> #define MAX_SERVICE_SIZE 1024 * 64 #define MAX_QUERY_SIZE 1024 * 8 int main(void) { do { SC_HANDLE SCMan = OpenSCMana...
  • Windows原版系统下载地址列表

    万次阅读 2017-05-27 10:34:06
    Windows 7 企业版 (64位) Windows 7 Enterprise (x64) – DVD (Chinese-Simplified) 文件名:cn_windows_7_enterprise_x64_dvd_x15-70741.iso SHA1:EE20DAF2CDEDD71C374E241340DEB651728A69C4 MD5:211C49713392879...
  • Windows运行命令列表

    2008-03-13 13:21:00
    Windows运行命令列表 wqwinver---------检查Windows版本wmimgmt.msc----打开windows管理体系结构wupdmgr--------windows更新程序wscrip t--------windows脚本宿主设置write----------写字板winmsd---------系统信息...
  • windows消息列表

    千次阅读 2006-08-19 21:55:00
    此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息  WM_SETFONT = $0030; 当绘制文本时程序发送此消息得到控件要用的颜色  WM_GETFONT = $0031; 应用程序发送此消息得到当前...
  • PHP官方Windows扩展列表

    千次阅读 2014-09-04 06:44:55
    发现很多学PHP的同学常常因为找不到PHP在windows下对应的扩展而抓破头,因此分享一下PHPWindows所有可以找到的扩展索引资源: PHP 5.2/5.3的Windows扩展索引站点: 在这里你可以找到诸如php_oci8.dll, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,703
精华内容 7,481
关键字:

windows列表