Показать сообщение отдельно
Старый 07.08.2011, 14:42   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Пути к системным директориям.

Прошу простить, что не написал своё решение ранее (меня долго не было в сети):
Используемый DECLS файл "shell32.decls"
.lib "shell32.dll" 
api_CommandLineToArgv% (lpCmdLine$, pNumArgs%) : "CommandLineToArgvW" 
api_DoEnvironmentSubst% (szString$, cbString%) : "DoEnvironmentSubstA" 
api_DragAcceptFiles (hwnd%, fAccept%) : "DragAcceptFiles" 
api_DragFinish (hDrop%) : "DragFinish" 
api_DragQueryFile% (HDROP%, UINT%, lpStr$, ch%) : "DragQueryFileA" 
api_DragQueryPoint% (HDROP%, lpPoint*) : "DragQueryPoint" 
api_DuplicateIcon% (hInst%, hIcon%) : "DuplicateIcon" 

api_ExtractAssociatedIcon% (hInst%, lpIconPath$, lpiIcon%) : "ExtractAssociateIconA" 
api_ExtractIcon% (hInst%, lpszExeFileName$, nIconIndex%) : "ExtractIconA" 
api_ExtractIconEx% (lpszFile$, nIconIndex%, phiconLarge%, phiconSmall%, nIcons%) : "ExtractIconExA" 

api_FindEnvironmentString$ (szEnvVar$) : "FindEnvironmentStringA" 
api_FindExecutable% (lpFile$, lpDirectory$, lpResult$) : "FindExecutableA" 


api_Shell_NotifyIcon% (dwMessage%, lpData*) : " Shell_NotifyIconA" 
api_ShellAbout% (hwnd%, szApp$, szOtherStuff$, hIcon%) : "ShellAboutA" 
api_ShellExecute% (hwnd%, lpOperation$, lpFile$, lpParameters$, lpDirectory$, nShowCmd%) : "ShellExecuteA" 

api_SHAppBarMessage% (dwMessage%, pData*) : "SHAppBarMessage" 
api_SHFileOperation% (lpFileOp*) : " SHFileOperationA" 
api_SHFreeNameMappings (hNameMappings%) : "SHFreeNameMappings" 
api_SHGetFileInfo% (pszPath$, dwFileAttributes%, psfi*, cbFileInfo%, uFlags%) : " SHGetFileInfoA" 
api_SHGetNewLinkInfo% (pszLinkto$, pszDir$, pszName$, pfMustCopy%, uFlags%) : "SHGetNewLinkInfoA" 
api_SHGetFolderPath%(hwndp1p2p3out*) : "SHGetFolderPathA"

api_WinExecError (hwnd%, error%, lpstrFileName$, lpstrTitle$) : "WinExecErrorA" 
Код Blitz3D:
Function GetMyDocumentsPath$()
	Local bank = CreateBank(256)	
	Local s$  = ""

	api_SHGetFolderPath(0, $5, 0, 0, bank)
	
	For i = 0 To 255
		b = PeekByte(bank, i)
		If b = 0 Then Exit
		s$ = s$ + Chr$(b)
	Next
	FreeBank(bank)
	If Right$(s$, 1) <> "\" Then s$ = s$ + "\"
	Return s$
End Function

Print GetMyDocumentsPath$()
WaitKey()	
End
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
L-ee-X (08.08.2011)