主题
获取进程图标 - GetProcessIconImage
函数简介
获取指定进程的图标,并返回图像句柄。
接口名称
GetProcessIconImageDLL调用
c
long GetProcessIconImage(long ola, long pid, int targetWidth, int targetHeight);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| ola | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
| pid | 长整数型 | 进程ID。 |
| targetWidth | 整数型 | 目标图标宽度(像素)。 |
| targetHeight | 整数型 | 目标图标高度(像素)。 |
示例
SDK 调用
cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
long handle = ola.GetProcessIconImage(1234, 800, 600);csharp
using OLAPlug;
var ola = new OLAPlugServer();
long handle = ola.GetProcessIconImage(1234, 800, 600);python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
handle = ola.GetProcessIconImage(1234, 800, 600)java
import com.olaplug.OLAPlugServer;
OLAPlugServer ola = new OLAPlugServer();
long handle = ola.GetProcessIconImage(1234, 800, 600);cpp
var ola = com("OlaPlug.OlaSoft")
var handle = ola.GetProcessIconImage(1234, 800, 600)vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
handle = ola.GetProcessIconImage(1234, 800, 600)text
.局部变量 ola, OLAPlug
ola.创建 ()
handle = ola.GetProcessIconImage(1234, 800, 600)aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var handle = ola.GetProcessIconImage(1234, 800, 600);text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
长整数 handle = ola.GetProcessIconImage(1234, 800, 600)cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
long handle = ola.GetProcessIconImage(1234, 800, 600);原生 DLL 调用
cpp
long instance = CreateCOLAPlugInterFace();
long ptr = GetProcessIconImage(instance, 1234, 800, 600);
if (ptr != 0) {
char buffer[512] = {0};
GetStringFromPtr(ptr, buffer, sizeof(buffer));
FreeStringPtr(ptr);
}csharp
using System.Runtime.InteropServices;
using System.Text;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long CreateCOLAPlugInterFace();
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int GetStringFromPtr(long ptr, StringBuilder lpString, int size);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int FreeStringPtr(long ptr);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int GetStringSize(long ptr);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long GetProcessIconImage(long ola, long pid, int targetWidth, int targetHeight);
long instance = CreateCOLAPlugInterFace();
long ptr = GetProcessIconImage(instance, 1234, 800, 600);
if (ptr != 0) {
StringBuilder sb = new StringBuilder(GetStringSize(ptr) + 1);
GetStringFromPtr(ptr, sb, sb.Capacity);
FreeStringPtr(ptr);
string result = sb.ToString();
}python
from ctypes import CDLL, c_int, c_int64, create_string_buffer
ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
instance = ola.CreateCOLAPlugInterFace()
ptr = ola.GetProcessIconImage(instance, 1234, 800, 600)
if ptr:
buf = create_string_buffer(512)
ola.GetStringFromPtr(ptr, buf, 512)
ola.FreeStringPtr(ptr)
result = buf.value.decode("utf-8")返回值
| 返回值 | 说明 |
|---|---|
| (返回值) | 长整数型:进程图标的image句柄。返回 0 表示失败。 |
注意事项
| 项目 | 说明 |
|---|---|
| 缩放 | 图标会自动缩放到指定的目标宽度和高度。 |
| 常用图标尺寸 | 16x16(小图标)、32x32(标准图标)、64x64(大图标)。 |
| 使用完毕后需释放图像资源 | 使用完毕后需释放图像资源。 |
