我对Python真的很陌生,我正在尝试制作一个在桌面上运行的游戏,我需要将图像文件复制到桌面上的特定x和y以实际创建环境等,但我不能似乎知道如何做到这一点。
我看到人们提到“LVM_SETITEMPOSITION32”和“ListView_SetItemPosition”,但我找不到任何如何在 python 中使用它的示例。我还尝试导入 _winapi 以查看这是否是我所需要的,但它仍然无法理解“ListView_SetItemPosition”。我知道用这个想法开始学习 Python 可能真的很愚蠢。
这里是 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