SHFileOperation - НЕ РАБОТАЕТ
От: skitsko  
Дата: 26.02.06 11:27
Оценка:
#include <shellapi.h>
#pragma comment(lib,"shell32")

int res;
SHFILEOPSTRUCT fo;

ZeroMemory(&fo, sizeof(fo));
fo.hwnd = hwndOwner; // хэндл окна-владельца прогресс-диалога
fo.pFrom = pszFullPath;
fo.wFunc = FO_DELETE;
fo.fFlags = FOF_NOCONFIRMATION;
res = SHFileOperation(&fo);


Почему эта функция не работает, пишет что нету доступа ...!!! я передаю CString, полный путь наприемр : C:\Temp
...

26.02.06 17:45: Перенесено модератором из 'C/C++' — Odi$$ey
Re: SHFileOperation - НЕ РАБОТАЕТ
От: LuciferMoscow Россия  
Дата: 26.02.06 11:30
Оценка: 2 (1)
Здравствуйте, skitsko, Вы писали:
S>fo.pFrom = pszFullPath;// ДВА НУЛЕВЫХ СИМВОЛА В КОНЦЕ ДОЛЖНО БЫТЬ.
Re[2]: SHFileOperation - НЕ РАБОТАЕТ
От: skitsko  
Дата: 26.02.06 11:36
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>Здравствуйте, skitsko, Вы писали:

S>>fo.pFrom = pszFullPath;// ДВА НУЛЕВЫХ СИМВОЛА В КОНЦЕ ДОЛЖНО БЫТЬ.

да я понимаю, но как мне зделать если у меня в CString строка... ??
Re[3]: SHFileOperation - НЕ РАБОТАЕТ
От: LuciferMoscow Россия  
Дата: 26.02.06 11:41
Оценка:
Здравствуйте, skitsko, Вы писали:

S>Здравствуйте, LuciferMoscow, Вы писали:


LM>>Здравствуйте, skitsko, Вы писали:

S>>>fo.pFrom = pszFullPath;// ДВА НУЛЕВЫХ СИМВОЛА В КОНЦЕ ДОЛЖНО БЫТЬ.

S>да я понимаю, но как мне зделать если у меня в CString строка... ??

Не знаю. Я для таких целей std::vector<char> использую
Re[4]: SHFileOperation - НЕ РАБОТАЕТ
От: skitsko  
Дата: 26.02.06 11:45
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>Здравствуйте, skitsko, Вы писали:


S>>Здравствуйте, LuciferMoscow, Вы писали:


LM>>>Здравствуйте, skitsko, Вы писали:

S>>>>fo.pFrom = pszFullPath;// ДВА НУЛЕВЫХ СИМВОЛА В КОНЦЕ ДОЛЖНО БЫТЬ.

S>>да я понимаю, но как мне зделать если у меня в CString строка... ??

LM>Не знаю. Я для таких целей std::vector<char> использую

напиши пожалуйсто пример, я никогда не пользовался....
Re[3]: SHFileOperation - НЕ РАБОТАЕТ
От: zitz  
Дата: 26.02.06 12:42
Оценка: 4 (2)
Здравствуйте, skitsko, Вы писали:

S>да я понимаю, но как мне зделать если у меня в CString строка... ??


Ну а что CString::Format отваливается когда два нуля ставишь?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: SHFileOperation - НЕ РАБОТАЕТ
От: skitsko  
Дата: 26.02.06 12:48
Оценка:
Здравствуйте, zitz, Вы писали:

Z>Здравствуйте, skitsko, Вы писали:


S>>да я понимаю, но как мне зделать если у меня в CString строка... ??


Z>Ну а что CString::Format отваливается когда два нуля ставишь?


Спасибо, вот код:


int res;
SHFILEOPSTRUCT fo;
 
CString s;
s.Format("C:\\Tempory%c", '\0\0');

ZeroMemory(&fo, sizeof(fo));
fo.hwnd   = GetSafeHwnd();  // õýíäë îêíà-âëàäåëüöà ïðîãðåññ-äèàëîãà
fo.pFrom  = s;
fo.wFunc  = FO_DELETE;
fo.fFlags = FOF_NOCONFIRMATION | FOF_ALLOWUNDO;
res = SHFileOperation(&fo);
Re: SHFileOperation - НЕ РАБОТАЕТ
От: rg45 СССР  
Дата: 26.02.06 12:51
Оценка: -1
Здравствуйте, skitsko, Вы писали:

S>#include <shellapi.h>

S>#pragma comment(lib,"shell32")

S>int res;

S>SHFILEOPSTRUCT fo;

S>ZeroMemory(&fo, sizeof(fo));

S>fo.hwnd = hwndOwner; // хэндл окна-владельца прогресс-диалога
S>fo.pFrom = pszFullPath;
S>fo.wFunc = FO_DELETE;
S>fo.fFlags = FOF_NOCONFIRMATION;
S>res = SHFileOperation(&fo);


S>Почему эта функция не работает, пишет что нету доступа ...!!! я передаю CString, полный путь наприемр : C:\Temp

S>...

Если я не ошибаюсь, то обращение к Shell-функциям требуется инициализация COM-а.
Попробуй воткнуть в одну из своих функций такую строчку:


  static HRESULT com_inited = CoInitialize(0);
--
Справедливость выше закона. А человечность выше справедливости.
Re[2]: SHFileOperation - НЕ РАБОТАЕТ
От: skitsko  
Дата: 26.02.06 13:06
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, skitsko, Вы писали:


S>>#include <shellapi.h>

S>>#pragma comment(lib,"shell32")

S>>int res;

S>>SHFILEOPSTRUCT fo;

S>>ZeroMemory(&fo, sizeof(fo));

S>>fo.hwnd = hwndOwner; // хэндл окна-владельца прогресс-диалога
S>>fo.pFrom = pszFullPath;
S>>fo.wFunc = FO_DELETE;
S>>fo.fFlags = FOF_NOCONFIRMATION;
S>>res = SHFileOperation(&fo);


S>>Почему эта функция не работает, пишет что нету доступа ...!!! я передаю CString, полный путь наприемр : C:\Temp

S>>...

R>Если я не ошибаюсь, то обращение к Shell-функциям требуется инициализация COM-а.

R>Попробуй воткнуть в одну из своих функций такую строчку:


R>
R>  static HRESULT com_inited = CoInitialize(0);
R>



спасибо но ответ смотри выше уже разобрался....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.