使用有效的win32 dll

时间:2015-06-11 16:40:34

标签: python ctypes

我正在尝试包装一个小的cpp文件,该文件获取文件的Jumbo图标。但是,当我尝试从dll目录中启动的命令行调用它并使用以下方法调用dll时,它不起作用。

命令行(与dll在同一个目录中)

from ctypes import *
lib=ctypes.cdll.LoadLibrary("GetIcon.dll")
  

追踪(最近一次通话):    
文件"",第1行,in           
文件" C:\ Python27 \ lib \ ctypes__init __。py",第443行,在LoadLibrary中              
返回self._dlltype(名称)           
文件" C:\ Python27 \ lib \ ctypes__init __。py",365行, init              
self._handle = _dlopen(self._name,mode)           
WindowsError:[错误193]%1不是有效的Win32应用程序

GetIcon.cpp

// GetIcon.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "stdafx.h"
#include <shlobj.h>
#include <shlguid.h>
#include <shellapi.h>
#include <commctrl.h>
#include <commoncontrols.h>

HICON GetJumboIcon(char *filePath);



HICON GetJumboIcon(LPCWSTR filePath) {
    SHFILEINFOW sfi = { 0 };
    SHGetFileInfo(filePath, -1, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX);
    //Get Image list for system
    HIMAGELIST* imageList;
    HRESULT hResult = SHGetImageList(SHIL_EXTRALARGE, IID_IImageList, (void**)&imageList);
    if (hResult == S_OK) {
        HICON hIcon;
        hResult = ((IImageList*)imageList)->GetIcon(sfi.iIcon, ILD_TRANSPARENT, &hIcon);

        if (hResult == S_OK) {
            //if it works, return it.
            return hIcon;
        }

    }
}

我正在使用x64 Python,而且我正在使用VStudio 2013

0 个答案:

没有答案