如何设置文件在桌面上的x和y位置(python)

问题描述 投票:0回答:1

我对Python真的很陌生,我正在尝试制作一个在桌面上运行的游戏,我需要将图像文件复制到桌面上的特定x和y以实际创建环境等,但我不能似乎知道如何做到这一点。

我看到人们提到“LVM_SETITEMPOSITION32”和“ListView_SetItemPosition”,但我找不到任何如何在 python 中使用它的示例。我还尝试导入 _winapi 以查看这是否是我所需要的,但它仍然无法理解“ListView_SetItemPosition”。我知道用这个想法开始学习 Python 可能真的很愚蠢。

python windows winapi
1个回答
0
投票

这里是 C++ 示例代码:

void FindDesktopFolderView(REFIID riid, void **ppv)
{
    CComPtr<IShellWindows> spShellWindows;
    spShellWindows.CoCreateInstance(CLSID_ShellWindows);

    CComVariant vtLoc(CSIDL_DESKTOP);
    CComVariant vtEmpty;
    long lhwnd;
    CComPtr<IDispatch> spdisp;
    spShellWindows->FindWindowSW(&vtLoc, &vtEmpty, SWC_DESKTOP, &lhwnd, SWFO_NEEDDISPATCH, &spdisp);

    CComPtr<IShellBrowser> spBrowser;
    CComQIPtr<IServiceProvider>(spdisp)->QueryService(SID_STopLevelBrowser, IID_PPV_ARGS(&spBrowser));

    CComPtr<IShellView> spView;
    spBrowser->QueryActiveShellView(&spView);

    spView->QueryInterface(riid, ppv);
}

int __cdecl wmain(int argc, wchar_t **argv)
{
    CCoInitialize init;
    CComPtr<IFolderView> spView;
    FindDesktopFolderView(IID_PPV_ARGS(&spView));

    CComPtr<IEnumIDList> spEnum;
    spView->Items(SVGIO_ALLVIEW, IID_PPV_ARGS(&spEnum));
    for (CComHeapPtr<ITEMID_CHILD> spidl; spEnum->Next(1, &spidl, nullptr) == S_OK; spidl.Free())
    {
        POINT pt;
        spView->GetItemPosition(spidl, &pt);
        pt.x += (rand() % 5) - 2;
        pt.y += (rand() % 5) - 2;

        PCITEMID_CHILD apidl[1] = { spidl };

        spView->SelectAndPositionItems(1, apidl, &pt, SVSI_POSITIONITEM);
    }

    return 0;
}

希望你能自己将其转换为Python。

来源:https://devblogs.microsoft.com/oldnewthing/20130318-00/?p=4933

© www.soinside.com 2019 - 2024. All rights reserved.