Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вызов диалога "Свойства файла"

8.2K
03 марта 2008 года
Pelican
115 / / 16.06.2007
Привет всем!!!
В инете нашел пример вызова диалога свойства файла. Все скопировал в новый проект, чтобы протестировать. Проект без проблем скомпилировался и запустился, но диалог не отображается. Вопрос: в чем ошибка?
Пример в чистом виде, как нашел, прилагаю.
Код:
SHObjectProperties Example
  1.

  Start a new application.
  2.

  Insert in your source code:
 
typedef void (__stdcall *pSHObjectProperties)(HWND, UINT, LPCSTR,
LPCSTR);
 
HINSTANCE hInstance;
pSHObjectProperties SHObjectProperties;
  3.

  Edit the OnCreate event of your form:
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    hInstance = LoadLibrary("SHELL32.DLL");
    if(!hInstance)
    {
        ShowMessage("Error loading SHELL32.DLL\n"
                    "This application will be closed");
        Application->Terminate();
    }
 
    SHObjectProperties = (pSHObjectProperties)
        GetProcAddress(hInstance, (char *)178);
}
  4.

  Double-click the OnDestroy event:
 
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    FreeLibrary(hInstance);
}
  5.

  Add a Button. Edit its OnClick event:
 
#define OPF_PRINTERNAME 0x01
#define OPF_PATHNAME 0x02
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    SHObjectProperties(Handle, OPF_PATHNAME,
        "c:\\autoexec.bat", NULL);
}
 
Once the Button is clicked, the application should show the Properties dialog for autoexec.bat.

Суть в том, что вызывается функция SHObjectProperties из shell32.dll.
Спасибо.
246
03 марта 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: Pelican
Привет всем!!!
В инете нашел пример вызова диалога свойства файла.
...



Minimum operating systems Windows 2000?

Можно так:
::ShellExecute(NULL, "properties", szPathName, NULL, NULL, SW_SHOWNORMAL);

8.2K
04 марта 2008 года
Pelican
115 / / 16.06.2007
Цитата:

Minimum operating systems Windows 2000?


Я работаю под WinXP SP2.

Цитата:

Можно так:
::ShellExecute(NULL, "properties", szPathName, NULL, NULL, SW_SHOWNORMAL);


Пробовал, та же фигня. При отладке видно события в Event Log, но диалог не появляется.

246
05 марта 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: Pelican
Я работаю под WinXP SP2.

Пробовал, та же фигня. При отладке видно события в Event Log, но диалог не появляется.


Код:
#include <shellapi.h>
...
typedef BOOL (WINAPI *SHOBJECTPROPERTIES)(
    HWND hwnd, DWORD dwType, LPCWSTR lpObject, LPCWSTR lpPage);

#ifndef SHOP_FILEPATH
#define SHOP_FILEPATH               0x00000002
#endif

#define SHOP_EXPORT_ORDINAL         178
...
SHOBJECTPROPERTIES pSHObjectProperties=NULL;

    pSHObjectProperties = (SHOBJECTPROPERTIES)::GetProcAddress(::LoadLibrary("shell32"), "SHObjectProperties");

    /*if (!pSHObjectProperties)
    {
        pSHObjectProperties = (SHOBJECTPROPERTIES)::GetProcAddress(::LoadLibrary("shell32"), (LPCSTR)SHOP_EXPORT_ORDINAL);
    }*/

    if (pSHObjectProperties)
    {
        pSHObjectProperties(Handle, SHOP_FILEPATH, WideString("c:\\autoexec.bat"), 0);
    }

как часы...
8.2K
06 марта 2008 года
Pelican
115 / / 16.06.2007
Цитата:

как часы...


Попробовал данный пример. Если запустить код как есть, то проект не скомпилируется. Я попробовал исправить WideString на PWideChar, исходя из ошибки, которая возникает. Скомпилировался... Запустился... Но...

Цитата:

Та же фигня


Не знаю почему так происходит... Что делать?

246
11 марта 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: Pelican
Попробовал данный пример. Если запустить код как есть, то проект не скомпилируется. Я попробовал исправить WideString на PWideChar, исходя из ошибки, которая возникает. Скомпилировался... Запустился... Но...


WideString("c:\\autoexec.bat").BSTR()

Цитата: Pelican

Не знаю почему так происходит... Что делать?


Ну ты уж попробуй догадаться сам, если не приводишь сообщение компиллятора:)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог