· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› проблемка с путями к файлам

Посл.отвђт Сообщенiе


Дата: Июн 4, 2004 23:58:50

Добрый вечер. У меня маленькая проблемка - написал нечто отдаленно напоминающее прогу, хэ-хэ =)(я пока начинающий еще) точнее GUI на masm к досовской
проге работающей исключительно через command line, что меня порядком раздражает. Моя прога значит берет путь к файлу через GetOpenFileName в результате по offset-у Name кладется cкажем c:\Program Files\Yz Platinum\YzDock.exe а мне нужен
не этот путь а короткий что вроде c:\Progra~1\и так далее, иначе досовская прога комманд не понимает и работать отказывается. Как бы его сконвертировать?
Помогите...


Дата: Июн 5, 2004 00:31:07

А самому слабо? Алгоритм-то ведь простенький.


Дата: Июн 5, 2004 00:35:26

Рульная вещь - поиск по форуму. А также MSDN.
Используй функцию GetShortPathName.


Дата: Июн 5, 2004 01:03:30

Рульная вещь - поиск по форуму

О! Растут люди :) Скоро меня в этом плане за пояс засунут :) Хи-хи :)))


Дата: Июн 5, 2004 21:15:04

Cпасибо большое, с GetShortPathName получилось
Алгоритм-то ведь простенький.
ну не такой уж простенький, особенно если не юзать API.
Да и быстрее наверно будет напрямую вызвать функцию напрямую

Вот еще кое что нашаманил:
; переключатель раскладки клавы в зависимости от условий: 
; Горит ScrollLock ? - Россия
; Не горит ScrollLock ? - USA

ScrollLock proc hWnd:HWND
 .data
 ru db '00000419',0
 en db '00000409',0
 .code  
    invoke GetKeyboardLayout, NULL 
    mov ebx, eax 
    invoke GetKeyState, VK_SCROLL
         .if (eax ==1)
 	     cmp ebx, 04190419h
 	     jz @1
 	     invoke LoadKeyboardLayout, addr ru, KLF_ACTIVATE 
 	@1:
 	      nop
           .endif  	  
            .if (eax ==0) 
 	       cmp ebx, 04090409h
 	       jz @2
 	       invoke LoadKeyboardLayout, addr en, KLF_ACTIVATE 
               @2:	 
               nop
 	 .endif  
    ret  	  
ScrollLock endp


простенький конечно как 2+2 =), зато удобно.

работает правда только в пределах той проги из которой запускается ...
Но ведь должен быть способ сделать что бы он не только в пределах
одной проги работал?

я пробовал через
invoke SendMessage, HWND_BROADCAST, WM_INPUTLANGCHANGE, addr ru, addr ru
не пашет, только почему?


Дата: Июн 6, 2004 06:24:24

не пашет, только почему?
Да потому что!
This function only affects the layout for the current process or thread.

Читай MSDN.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067