02.02.2009, 09:43 | #1 |
Участник
|
WinAPI::getFullPathName
Написал следущую обёртку для функции getFullPathName:
X++: client static Filename getFullPathName(Filename _filename) { DLL _winApiDLL = new DLL(#KernelDLL); DLLFunction _getFullPathName = new DLLFunction(_winApiDLL, 'GetFullPathNameW'); Binary bufer = new Binary(#MAX_PATH); ; _getFullPathName.returns(ExtTypes::DWord); _getFullPathName.arg(ExtTypes::WString, ExtTypes::Pointer, ExtTypes::WString, ExtTypes::WString); if(_getFullPathName.call(_filename, #MAX_PATH*2, bufer, null)) { _getFullPathName.call(_filename, #MAX_PATH*2, bufer, null); return bufer.wString(0); } return ''; } X++: static void WinAPIgetFullPathName(Args _args) { Filename filename; ; filename = winAPI::getFullPathName("myfile.txt"); info(strfmt("%1", filename)); } |
|
02.02.2009, 09:49 | #2 |
Программатор
|
Посмотрите
WinApi::findFirstFile("мой файлик.расширение"); Может поможет |
|
02.02.2009, 12:31 | #3 |
MCTS
|
Второй параметр DWORD вроде, а не Pointer...
и под буфер выделять надо тогда тоже #MAX_PATH*2 |
|
02.02.2009, 13:57 | #4 |
Участник
|
Цитата:
Второй параметр DWORD вроде, а не Pointer...
и под буфер выделять надо тогда тоже #MAX_PATH*2 Ошибка: Функция "GetFullPathNameW" в библиотеке DLL "KERNEL32" привела к возникновению исключения. |
|
02.02.2009, 15:01 | #5 |
Участник
|
Пример. DAX 4.0
X++: static void jbGetFullPathName(Args _args) { #define.KernelDLL('KERNEL32') #define.offset0(0) str getFullPathName( fileName _fileName ) { #define.BufferSize(2048) DLL winApiDll = new DLL( #KernelDLL ) ; DLLFunction functionGetFullPathName = new DLLFunction( winApiDll, 'GetFullPathNameW' ) ; Binary retVal = new Binary( #BufferSize * 2 ) ; // for *W functions alloc x2 size ; functionGetFullPathName.returns(ExtTypes::DWord); functionGetFullPathName.arg(ExtTypes::WString, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::Pointer); if( functionGetFullPathName.call( _fileName, #BufferSize, retVal, null ) ) return retVal.wString( #Offset0 ) ; return ''; } ; info( getFullPathName( 'SampleFileName.txt' ) ) ; } |
|