ホットキーで起動する Windows 用のアプリケーション ランチャーを作成する予定です。必要なものをクリックして起動できるアイコンのポップアップ グリッドにするつもりです。スタート メニューとデスクトップを自動的にスキャンしてプログラムのショートカットを探し、それらをカタログ化するようにしたいと考えています。ただし、ショートカット/実際のバイナリからアイコンを取得する方法がわかりません。このようなことを処理する C/C++ 用のライブラリがあるかどうか疑問に思っていました。そうでない場合、どうすればいいですか?
4745 次
5 に答える
5
使いたいと思いますExtractAssociatedIcon
http://msdn.microsoft.com/en-us/library/ms648067%28v=VS.85%29.aspxを参照して ください。
于 2011-06-23T18:52:05.610 に答える
1
- LoadLibraryEx -
LOAD_LIBRARY_AS_DATAFILE
またはを使用LOAD_LIBRARY_AS_IMAGE_RESOURCE
- EnumResourceNames - リソースを見つける
- LoadImage / LoadIcon - 画像/アイコンをロードします
于 2011-06-23T18:57:29.523 に答える
1
この記事は役に立つかもしれません: http://www.codeproject.com/KB/shell/shellicon.aspx
于 2011-06-23T18:57:29.590 に答える
1
resources extractは、dll/ocx/exe ファイルから画像を抽出するツールの 1 つです。
クローズド ソース アプリケーションを使用したくない場合は、ソース付きの Icon Extractorを使用します。
于 2011-06-23T18:46:20.360 に答える
1
ExtractIconEx. 完全なソース コードは、私のオープン ソース プロジェクト、icon.cpp という名前のファイルにあります。システム変数の展開と、インデックスからのアイコンの取得をサポートしています。%SYSTEMROOT%\system32\shell32.dll,43
これがその根性です:
HICON GoFindAnIcon(LPCTSTR path)
{
HICON icon = 0;
//not using our parent's icon
if(_tcsicmp(L"parent", path))
{
icon = (HICON)LoadImage(0, path, IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_LOADFROMFILE|LR_LOADMAP3DCOLORS);
if(!icon)
{
//Try something else
TCHAR mypath[MAX_PATH];
const TCHAR *cleanpath = path;
const TCHAR *comma;
comma = _tcsrchr(path, ',');
UINT index = 1;
if(comma)
{
_tcsncpy(mypath, path, comma-path); //Can you exploit this buffer overflow ?
mypath[comma-path] = TCHAR(0);
index = _ttoi(comma+1);
cleanpath = mypath;
}
ExtractIconEx(cleanpath, index, 0, &icon, 1);
}
}
else
{
icon = GetParentProcessIcon();
}
return icon;
}
于 2011-06-23T19:16:35.023 に答える