标签: syslistview32

SysListView32就像鼠标选择矩形一样

我可以在列表视图中制作鼠标选择矩形,就像在SysListView32中一样吗? 在此输入图像描述

有没有办法使用SysListView32并在Delphi中使用它?

谢谢!

delphi listview selection syslistview32

6
推荐指数
1
解决办法
721
查看次数

如何解决windows-10 webbrowser shellfolderview滚动Bug?

我使用WebBrowser-Control来查看文件夹的内容.

在窗口10上有一个Display-Bug,在重新排序内容后,当所选项目从下到上移动时.

让我们重现:

  1. 启动干净的winform或wpf解决方案
  2. 将WebBrowser-Control拖入其中
  3. 添加代码以导航到您的自定义文件夹,例如:

    public Form1() { InitializeComponent(); webBrowser1.Navigate(@"C:\tmp\yourfolder\"); }

  4. 启动应用程序,切换到详细信息 - 如果需要查看(右键单击 - 上下文菜单) WebBrowser控件在DetailView中显示本地文件夹

  5. 按名称列排序,选择第一个条目

  6. 按名称列排序以将项目移动到结尾

所选项目滚动到底部

  1. 再次按名称列排序,将所选项目移至顶部

显示滚动条,窗口和列表不同步

你会看到,滚动条,窗口和列表不同步.滚动条向上移动,但项目未移动到列表中的第一个位置.此项目仅在鼠标悬停后可见.还拖动滚动条一点,不能治愈这种不端行为.

有人知道如何克服这个问题吗?我想通过调用InvalidateRect或向挂钩的SysListView32发送WM_PAINT消息来强制shellfolderview重绘,但没有成功.

是的,我想用详细信息显示列表 - 查看:-).

怎么解决这个?

.net webbrowser-control syslistview32 shell32.dll windows-10

5
推荐指数
1
解决办法
149
查看次数

100万行ListView

我有一个SysListView32应该托管数百万行,三列文本A,B,C每个<256个字符.

假设列B有很多次重复(例如:列A是文件名,列B是路径,每行是文件系统的文件),并且只有100k不同的值(而不是几百万).

是否可以避免ListViewGUI元素B列内容的RAM重复?

我们可以ListView只填充指向数组元素的指针(取自列B的不同值的100k元素数组),而不是重复数据吗?

如何修改它以使其工作?

LV_ITEM item;
item.mask = LVIF_TEXT;
item.pszText = "Hello";
...
ListView_SetItem(hList, &item);
Run Code Online (Sandbox Code Playgroud)

windows user-interface winapi listview syslistview32

5
推荐指数
1
解决办法
313
查看次数

使用Python从另一个应用程序提取ListView项目

我有一个带有ListView('SysListView32')控件的应用程序,我想从中提取数据。该控件有4列,仅文本数据。

我一直在玩以下几行(在网上某处找到):

VALUE_LENGTH = 256
bufferlength_int=struct.pack('i', VALUE_LENGTH)
count = win32gui.SendMessage(TargetHwnd, commctrl.LVM_GETITEMCOUNT, 0, 0)
for ItemIndex in range(count):
    valuebuffer = array.array('c',bufferlength_int + " " * (VALUE_LENGTH - len(bufferlength_int)))
    ListItems = win32gui.SendMessage(TargetHwnd, commctrl.LVM_GETITEMTEXT, ItemIndex, valuebuffer)
Run Code Online (Sandbox Code Playgroud)

[上面的代码可能不是完全可执行的,因为我从不相关的内容中删除了它。但要旨肯定在这里。]

这似乎运行良好,但是我必须做错了-作为回报,我得到了各种几乎为零的数据缓冲区,而我没有寻找任何实际的文本内容。

有什么建议么?

谢谢,
Yonatan

python listview pywin32 syslistview32

3
推荐指数
1
解决办法
3337
查看次数

从64位的SysListView32获取文本

这是我的代码:

   public static string ReadListViewItem(IntPtr lstview, int item)
    {
        const int dwBufferSize = 1024;

        int dwProcessID;
        LV_ITEM lvItem;
        string retval;
        bool bSuccess;
        IntPtr hProcess = IntPtr.Zero;
        IntPtr lpRemoteBuffer = IntPtr.Zero;
        IntPtr lpLocalBuffer = IntPtr.Zero;
        IntPtr threadId = IntPtr.Zero;

        try
        {
            lvItem = new LV_ITEM();
            lpLocalBuffer = Marshal.AllocHGlobal(dwBufferSize);
            // Get the process id owning the window
            threadId = GetWindowThreadProcessId(lstview, out dwProcessID);
            if ((threadId == IntPtr.Zero) || (dwProcessID == 0))
                throw new ArgumentException("hWnd");

            // Open the process with all access
            hProcess = …
Run Code Online (Sandbox Code Playgroud)

c# winapi syslistview32

3
推荐指数
1
解决办法
7244
查看次数