открытие файла(перетаскивание я
Posted: Tue Jan 20, 2009 8:52 pm
Собственно, как реализовать открытие файла посредством перетаскивания его ярлыка на ярлык моей программы?
Куда копать?
Куда копать?
Official forum for the wxWidgets Cross-Platform GUI Toolkit
https://forums.wxwidgets.org/
Code: Select all
if( wxStrlen(wxGetApp().argv[1]) )
{
wxFileName file(wxGetApp().argv[1]);
if(file.FileExists())text_control->LoadFile(wxGetApp().argv[1]);
}
Code: Select all
#ifdef __WXMSW__
#include <objidl.h>
#include <shlobj.h>
#endif
//...
#ifdef __WXMSW__
if(wxStrlen(wxGetApp().argv[1]))
{
IPersistFile* ppf;
IShellLink* pshl;
WIN32_FIND_DATA wfd;
setlocale(LC_ALL, "");
::CoInitialize(NULL);
::CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IPersistFile,
reinterpret_cast<void**>(&ppf));
#if defined(_UNICODE)
ppf->Load(wxGetApp().argv[1], STGM_READ);
#else
LPWSTR pwszTemp = new WCHAR[_MAX_PATH];
mbstowcs(pwszTemp, wxGetApp().argv[1], _MAX_PATH);
ppf->Load(pwszTemp, STGM_READ);
delete[] pwszTemp;
#endif
ppf->QueryInterface(IID_IShellLink, reinterpret_cast<void**>(&pshl));
pshl->Resolve(NULL, SLR_ANY_MATCH | SLR_NO_UI);
LPTSTR pszTarget = new TCHAR[_MAX_PATH];
pshl->GetPath(pszTarget, _MAX_PATH, &wfd, 0);
if( wxStrlen(pszTarget) )
{
wxFileName file(pszTarget);
if(file.FileExists(pszTarget))
text_control->LoadFile(pszTarget);
}
else
{
wxFileName file(wxGetApp().argv[1]);
if(file.FileExists(wxGetApp().argv[1]))
text_control->LoadFile(wxGetApp().argv[1]);
}
delete[] pszTarget;
pshl->Release();
ppf->Release();
::CoFreeUnusedLibraries();
::CoUninitialize();
}
#else
if( wxStrlen(wxGetApp().argv[1]) )
{
wxFileName file(wxGetApp().argv[1]);
if(file.FileExists()) text_control->LoadFile(wxGetApp().argv[1]);
}
#endif
Code: Select all
LPWSTR pwszTemp = new WCHAR[_MAX_PATH];
mbstowcs(pwszTemp, wxGetApp().argv[1], _MAX_PATH);
ppf->Load(pwszTemp, STGM_READ);
delete[] pwszTemp;