• ↓
  • ↑
  • ⇑
 
Записи с темой: программизм (список заголовков)
01:37 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2636-18-12
#original-date: 14.10.2007 Sun
#original-time: 6:12 PM
#original-day:  2636

Вчера приключился один прикол. Наконец я созрела чтобы добавить в AJPappsSupport.DLL функции для разбиения имени файла на части - надоело таскать из программы в программу код. Открываю MSDEV и вижу, что эти функции были в библиотеке ещё до смерти винта... Мда... Приятный сюрприз...

#music: move\Initial D Fourth Stage\Blast My Desire

@темы: Программизм

01:37 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2637-01-42
#original-date: 15.10.2007 Mon
#original-time: 1:42 AM
#original-day:  2637

Проверила догадку в NT4. Да. Если Private desktops запускает второй Explorer, то растры в системе портятся. А в XP наблюдаются тормоза, особенно на слабых машинах. /* У меня Photoshop периодически страшно задумывался. */ Но вот я у себя поставила второй оболочкой FAR, и тормозов как не бывало. В NT4 поставила CMD.EXE как вторую оболочку - всё в порядке. Но больше всего повеселило вот что. Я на втором десктопе консоль перевела в полноэкранный режим и попереключалась. Угадайте, на что это было похоже? ^___^

@темы: Программизм

01:35 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2635-22-18
#original-date: 13.10.2007 Sat
#original-time: 10:18 PM
#original-day:  2635

Впервые года за три написала надстройку для VB6. Полезную, хотя проблема такая наблюдалась только в XP. Это когда запускаешь программу, она что-то интенсивно считает, а потом возвращается всё в Design Mode, а в углу какое-то непонятное окно, которое даже не перерисовывается... Оказалось что это окно класса IDEOwner, которое и прячет моя надстройка.

В принципе, она примитивная, если не считать того что я долго пыталась понять как получить объект, свойства которого показывают когдапроект переходит в режим выполнения. Минут через пятнадцать я догадалась включить скрытые объекты. Нашла класс, но сразу не поняла как получить его объект... Оказалось что класс Events2 реализует ещё и Events, так что вот такой финт ушами мне помог:

  Dim EVT As Events2
 Set EVT = VBInstance.Events ' Возвращает Events
 
 Set BuildEvents = EVT.VBBuildEvents()
 Set EVT = Nothing


Теперь подумываю написать надстройку, с которой можно будет открывть MSDN не лезя ни куда...

#music: Initial D\Initial D D Selection\Delta Queens / Dance Around the World

@темы: Программизм

01:29 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2630-20-55
#original-date: 8.10.2007 Mon
#original-time: 8:55 PM
#original-day:  2630

Вибишникам на заметку. Как известно, если мы вызываем функции из какой-то DLL, то она должна быть в текущем каталоге, в каталоге программы или в системном каталоге. Но обычно в Declare указывается только имя файла, иначе полный путь нельзя будет изменить при работе программы. Собственно, пока библиотека там, куда достаёт функция LoadLibrary(), а именно её вызывает VB перед вызовом функции, нм беспокоиться не о чем. А что если такой вариант? В некоем каталоге есть COM компонент, который использует некую библиотеку? Компонент не должен быть в System по идеологическим соображениям, а библиотека очень нужна. Можно, конечно, пихать её в System (чего не хочется) или в каталог каждой программы (что глупо), но это всё полумеры. Что делать?

Да всё очень просто. Мы сами скажем VB где её искать. Для начала через GetModuleFileName(), передав ему App.hInstance, мы узнаём имя файла библиотеки. Да, вызывать всё это нужно из кода самого компонента и ещё до того как будет вызвана первая же функция.  Потом отрезаем после последнего слэша всё лишнее, а потом прицепляем к нему имя файла библиотеки, которая нам нужна. Ну и вызываем LoadLibrary(). Прикол в том, что VB вызовет тоже LoadLibrary(), но система не будет грузить то, что уже загружено. Вот и всё.

Вот пример куска каласса, который использует библиотеку FilePNG.DLL:

Private hLib As Long

'====================================================================
Private Sub Class_Initialize()
 Dim FileName As String
 Dim RC As Long
 
 hLib = LoadLibrary("FilePNG.DLL")
 If hLib <> 0 Then Exit Sub
 
 FileName = asGetModulePrettyFileName(App.hInstance)
 
 RC = InStrRev(FileName, "\")
 If RC <> 0 Then FileName = Left(FileName, RC)
 
 FileName = asBuildFileName(FileName, "FilePNG.DLL")
 hLib = LoadLibrary(FileName)
End Sub

Private Sub Class_Terminate()
 If hLib <> 0 Then FreeLibrary hLib
End Sub


asGetModulePrettyFileName() - это моя функция, которая сразу делает красивым выход функции GetModuleFileName(), а потом возвращает BSTR, чтобы не мучиться с нулями и строками. asBuildFileName() просто ставит, если нужно, слэш между первым и вторым параметрами.

#music: The Spiders From Mars\Initial D Third Stage\Fly Me To The & The Moon & Black

@темы: Программизм

02:05 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2628-21-08
#original-date: 6.10.2007 Sat
#original-time: 9:08 PM
#original-day:  2628

Продолжаю смотреть Initial D Fourth Stage... Назрела мысль, что гонка под дождём - красивое занятие для психов ^^ Хотя обычно мне нравятся именно такие гонки.

Ещё назрела необходимость написать программу, которая создавала бы отдельный рабочий стол (в терминологии NT) для запуска программ, которые не стоит видеть окружающим. Скажем, запустить Фотошоп на отдельном рабочем столе и переключаться с него на основной чтобы любопытные не видели, что ты там рисуешь ^_^'

#music: Need For Speed II SE\Lotus Esprit

@темы: Initial D, Программизм

01:41 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-22-17
#original-date: 7.10.2007 Sun
#original-time: 10:17 PM
#original-day:  2629

О! Кажется нашла как сделать правильно чтобы в XP тултипы на уходили вглубь экрана ^_^ Будет ещё программа ^_^ Тоесть, программа была, но она не работала ^_^'

#music: Need For Speed II SE\Outback Techno

@темы: Программизм

01:40 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-22-00
#original-date: 7.10.2007 Sun
#original-time: 10:00 PM
#original-day:  2629

Кстати, надесь, то что я называю Windows 2000 и Windows XP как Windows NT... Ни кого это не смущает? А то иногда мне кажется, что люди думают, что Windows NT - это что-то страшное, с цифрой четыре, оставшееся в университетах.

#music: Need For Speed II SE\Monolithics Studios Techno

@темы: Программизм

01:39 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-21-51
#original-date: 7.10.2007 Sun
#original-time: 9:51 PM
#original-day:  2629

Мда... Ребятам сильно неповезло, когда они позвали бандитов ^_^ Обидно только за машин... Такие красивые Лансеры, а гоняют на них такие идиоты...

Кстати, вот вам решение проблемы блокировки компьютеров в клубах. Чтобы не заморачиваться с хуками, можно просто переводить заблокированную машину на другой рабочий стол, где будет только окно со страшным текстом.

#music: Need For Speed II SE\Monolithics Studios Rock

@темы: Initial D, Программизм

01:37 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-19-23
#original-date: 7.10.2007 Sun
#original-time: 7:23 PM
#original-day:  2629

Так. Программа работает и в NT4, и под гостем, что очень радует. Только в NT4 что-то стандартные растры испортились. И ещё при выходе из системы, рабочие столы прыгают туда-сюда...

#music: Need For Speed II SE\Show #1

@темы: Программизм

01:37 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-17-17
#original-date: 7.10.2007 Sun
#original-time: 5:17 PM
#original-day:  2629

Кстати, есть вариант тотального разделения рабочих столов - создать оконную станцию ^^ Тоесть в NT есть оконные станции, которые изолированы друг от друга, а каждая содержит несколько десктопов. Вот и идея переключать не десктопы, а оконные станции... Надо будет подумать...

#music: Need For Speed III: Hot Pursuit\SRV2

@темы: Программизм

01:35 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-17-15
#original-date: 7.10.2007 Sun
#original-time: 5:15 PM
#original-day:  2629

Так. Вопрос тысячелетия: как лучше переключать дескторы? По Win+Ctrl+F1 или по Win+1?

#music: Need For Speed III: Hot Pursuit\SHOW7

@темы: Программизм

01:32 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-15-24
#original-date: 7.10.2007 Sun
#original-time: 3:24 PM
#original-day:  2629

Хммм... Я-то думала, чего это у меня Process Viewer так странно работает. Оказалось, что в Windows NT ToolHelp функции, отвечающие за перечисление процессов, возвращают только имя файла без пути... Блин... И как это обойти? Неужели придётся юзать PSAPI?

Чего это я рванула в такие дебри? Да просто решила смотреть запущен ли на рабочем столе Explorer через GetThreadDesktop(). А все нити каждого экземпляра Explorer... Правильно, это мы получаем через библиотеку, которую использует Process Viewer. Ладно. Там видно будет...

#music: Need For Speed: High Stakes\Amorphious Being

@темы: Программизм

01:32 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-06-49
#original-date: 7.10.2007 Sun
#original-time: 6:49 AM
#original-day:  2629

Ух... Понаделала обоек (пара даже очень креативными получились), потом взялась за AJPapps - Private desktops. Теперь там переключение по горячим клавишам, иконка в трее. Только всё равно не удобно, что горячие клавиши привязаны к одному десктопу. По привычке жмёшь Win+R, и тишина ^^'

Кстати, у нас сотовую связь провели, при чём одновременно включились Мегафон (полгороде помчалась за чёткими немецкими тачками) и Яйца. Я, как обычно, в пролёте - только мамина симка есть. Но у нас же Россия ^_^ Включились в пятницу, прогремели на всю страну и выключились ^^ Больше я связи не видела... А ещё на Яйцах нет GPRS. варяг, который главный в фирме, которая Яйца привезла, сказал, что его нет и не будет. Когда я спорсила, представляет ли он, какую выгоду упускает, он лишь печально пожал плечами. Знаем, но не могём... Мда... А я так хотела обломать Дальсвязь...

@темы: Программизм

01:32 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-00-19
#original-date: 7.10.2007 Sun
#original-time: 12:19 AM
#original-day:  2629

Так. Горячие клавиши у нас глобальны на все десктопы. Но какие-нибудь Ctrl+Win+F1 можно сделать. Просто у нас для своего десктопа не будут создаваться горячая клавиша... И с мутексами подкрутим...

О! А ведь SwitchDesktop() можно вызывать от куда угодно! Хи-хи ^_^ Полбеды решено ^_^

/* Как захватывающе проходят выходные ^^ Вчера читала хентайную мангу, потом делала обойку, которую, пожалуй, оставлю ДСП ^^ Сегодня смотрела Initial D, потом потянула программизмом заняться... Дааа... */

Кстати, я всёже сделала зелёный вариант обойки по X-Change 2. Только осталось ещё прочих персонажей туда добавить.

#music: Need For Speed II SE\Outback Rock

@темы: Творчество, Программизм

01:31 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2629-00-12
#original-date: 7.10.2007 Sun
#original-time: 12:12 AM
#original-day:  2629

Блин! А чего я мучаюсь? Как показала практика, процесс можно запустить даже на несуществующем десктопе, и он создастся. Тоесть, наша задача просто заключается в том, чтобы сделать программу, которая проверит, запущена ли она на десктопе по умолчанию. И если да, то запустит на другом сама себя. А та уже запустит Проводник. Ну и переключаться они будут друг на друга. Я только не поняла, можно ли создать одинаковые горячие клавиши на разных десктопах, а то это бы пригодилось чтобы сделать кнопки переключения.

А теперь признавайтесь, кому эта программа пригодилась бы? Делать мне её с человеческим интерфейсом или как обычно? /* Как обычно - значит одинокий INI файл и ни каких диалогов настроек. */

#music: Need For Speed II SE\Proving Grounds Techno

@темы: Программизм

01:31 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2628-23-59
#original-date: 6.10.2007 Sat
#original-time: 11:59 PM
#original-day:  2628

Так. Запустила Explorer на другом рабочем столе. И он запустился ^^' Теперь бы ещё придумать механизм по переключению рабочих столов... В многопоточном приложении можно было бы создать по нити на рабочий стол, в каждой сделать SetThreadDesktop() и организовывать свою очередь сообщений... Но у нас VB... Разве что попробовать ActiveX EXE...

#music: Need For Speed II SE\Mediterraneo Techno

@темы: Программизм

01:30 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2628-23-07
#original-date: 6.10.2007 Sat
#original-time: 11:07 PM
#original-day:  2628

Работает ^_^ Немного кода, а столько счастья ^_^ Только на новом десктопе нет ни чего, даже панели задач.

Ну, как запустить программу на нужном рабочем столе я знаю. Теперь бы подумать как это всё использовать...

#music: Need For Speed II SE\Last Resort Techno

@темы: Программизм

01:20 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2625-20-23
#original-date: 3.10.2007 Wed
#original-time: 8:23 PM
#original-day:  2625

В обход CSS начала пересматривать Initial D Fourth Stage... Евробита как-то мало, зато как он появляется, становится очень весело ^^

Появилось желание переписать Dalsvyaz Card Checker с новым классом, но, пожалуй, зарублю его (желание, а не класс) - ибо и так всё работает.

#music: Limp Bizkit\Take A Look Around

@темы: Аниме, Initial D, Программизм

09:28 

Тотальная неудачница и убийца жёстких дисков.
Опять отправила пост не туда.... Ну как вам список Настоящего Программиста в хентайной галерее? >_<

Только что воевала с WinInet. Ну представьте: Dalsvyaz card checker работает через сокет прекрасно. Решила свой класс протестировать и соорудила такой же POST запрос. Отправляю - приходит какой-то 302 с редиректом. Что такое? Две программы, одна машина, одна работает, другая - нет. Долбилась я полдня, потом уже тупо начала в Фиддлере через Request Builder пробовать...

Уже хотела по тревоге поднимать кого-нибудь... Но! Тут я заметила что в разделителе данных формы в самом-самом последнем лишние чёрточки в конце! Ура!!! Я лечу пробовать, но теперь мне говорят (при чём не в KOI8-R, а в Windows -1251) пароль неправильный! Я снова долбиться, смотрю лог ImageShack Toolbar - вроде тоже самое... Но тут я всёже замечаю, что у всех разделителей в самом начале тоже лишние чёрточки... Я их добавила - заработало ^___^ Я даже три раза перепробовала чтобы убедиться что это не глюк ^^'

В общем. Допустим, в заголовке HTTP запроса у нас такая штука:

Content-Type: multipart/form-data, boundary=B-O-U-N-D-A-R-Y260076713845


B-O-U-N-D-A-R-Y260076713845 - это и есть разделитель. И вот сама форма должна выглядеть примерно так:

--B-O-U-N-D-A-R-Y260076713845
Content-Disposition: form-data&#59; name="rembar"

1
--B-O-U-N-D-A-R-Y260076713845
Content-Disposition: form-data&#59; name="url"

http://www.r66.nalog.ru/images/images2006/common/map_66.jpg
--B-O-U-N-D-A-R-Y260076713845--


Все разделитили начинаются на две чёрточки, а последий ещё и заканчивается ими. Вот этого я и не знала. Возможно, дома глюки с Фиддлером были именно из-за этого...

@темы: Программизм

01:32 

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2625-00-57
#original-date: 3.10.2007 Wed
#original-time: 12:57 AM
#original-day:  2625

Хммм... А сейчас поставила таймаут 200 секунд - долго думали, но справились...

А простой GET запрос прошёл без ошибок...

Хммм... Вырубаю симуляцию модемной скорости - нормально...

Ладно. Будем считать что Фидлер со включенной симуляцией стоит далеко не у каждого ^^'

#music: DMX\Grand Champ\19.Don't Gotta Go Home

@темы: Программизм

Лингрин :: Резиденция Линды Кайе

главная