Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lorents
В сети несложно найти примеры на разных языках. Например:
C++
Visual Basic
Dephi

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 23:19 13-11-2008
ChiPnGo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lorents
А на чем вы программируете? Можно было б тогда конкретнее.
WinAPI - это же не функции языка, а интерфейс между любой программой и системой + разные общие полезности.

Всего записей: 149 | Зарегистр. 25-10-2008 | Отправлено: 16:51 14-11-2008 | Исправлено: ChiPnGo, 16:53 14-11-2008
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все, наверное, сталкивались с тем что при скачивании исполняемого файла с помощью IE перед запуском этого файла ОС задает вопрос о безопасности скачаного файла. Это происходит потому что у файла, если открыть его свойства, стоит дополнительный атрибут "заблокировано". Его можно снять в свойствах. Так вот вопрос, как программно поставить такой атрибут.

Всего записей: 2184 | Зарегистр. 12-01-2005 | Отправлено: 17:23 14-11-2008
ChiPnGo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще вопрос по теме.
http://forum.ru-board.com/topic.cgi?forum=33&topic=0555&start=732
 
Этот юнит с классом теперь оформлен в виде длл.
Внутри функция, которая создает очередное окно при вызове и возвращает указатель на очередной объект класса. В ней запускается метод Run класса, в котором цикл приема сообщений.
Создание следующего окна блокирует выполнение Run предыдущего.
Создание потока (BeginThread с параметрами: указатель на созданный объект и указатель на функцию, которая по этому указателю вызывает Run нужного объекта) приводит к нормальному созданию окна и входу в Run, которое после нескольких операций зависает + закрытие окна убивает весь процесс. Похоже на неудачное создание потока выполнения с последующей утечкой памяти:
http://qc.codegear.com/wc/qcmain.aspx?d=67691
 
В фиксе еще неизвестный идентификатор "SystemThreadFuncProc".
 
PS Просто выходит как-то из Run. Гудини нашелся...

Всего записей: 149 | Зарегистр. 25-10-2008 | Отправлено: 18:43 14-11-2008 | Исправлено: ChiPnGo, 21:13 14-11-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ChiPnGo

Цитата:
Этот юнит с классом теперь оформлен в виде длл.

Ну у меня без длл и все нормально работает. Юзайте оригинальные данные. Утечек не видел.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:55 15-11-2008
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
VitaliM, сильно подозреваю, что это не атрибут. Я замечал у таких файлов альтернативный NTFS-поток, но не уверен, что дело ограничивается им. Попробуй покопай в этом направлении.


----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 19:49 15-11-2008
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qraizer
Тем не менее, если этот дополнительный поток удалить, кнопка "Unblock" из свойств исчезает. Присобачишь эти данные к другому файлу - появляется у того. Видимо, именно этот поток и надо копать.
 
PS. Тут есть некоторые подробности.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:59 15-11-2008 | Исправлено: Abs62, 22:10 15-11-2008
theHelg

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Есть оконное графическое приложение, которое САМО меняет картинку курсора мышки.
 
Мне нужно отловить момент, когда приложение меняет курсор с одного на другой.
 
MouseGetCursor возвращает все время тип ARROW, хотя в приложении форма курсора меняется...
 
Функция GetCursorInfo - через handle возвращает все время один и тот же указатель, несмотря на то, что курсор меняется...
 
Пытаюсь отловить цвет пикселя на указатели мышки, но GetPixel из gdi32.dll мне дает лишь цвет пикселя ПОД мышкой!
Смотрю цвет, что-то типа такого:
$pos = MouseGetPos()
$varColor = PixelGetColor($pos[0]+2, $pos[1]+2)
 
Собственно вопрос. Как или чем можно вытащить тип курсора (который всегда ARROW) или хотя бы цвет указателя мышки...  
 
ЗЫ Print Screen не предлагать... уже думал над этим, но очень долго работает...

Всего записей: 13 | Зарегистр. 12-11-2008 | Отправлено: 23:16 15-11-2008
windwail

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну обычно курсор меняется черерз это
SetClassLong (hwndChild, GCL_HCURSOR, LoadCursor (hInstance, TEXT ("childcursor")) ;
 

Всего записей: 48 | Зарегистр. 04-01-2007 | Отправлено: 17:18 27-11-2008
stupid_user

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно написать на WinApi аналог сишной функции fopen(FileName, Mode).
Апишная функция CreateFile, но вот не могу понять как с режимами открытия быть.
Например "rt" - тестовый режим; "rb" - бинарный режим. Как эти режимы скармливать CreateFile?
*пишу на delphi

Всего записей: 292 | Зарегистр. 12-11-2006 | Отправлено: 20:21 28-11-2008 | Исправлено: stupid_user, 20:30 28-11-2008
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stupid_user
Никак. WinAPI понятия не имеет о сишных потоках ввода-вывода. ReadFile/WriteFile работают в бинарном режиме.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 20:44 28-11-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stupid_user
по-моему, атрибутами FILE_FLAG_SEQUENTIAL_SCAN и FILE_FLAG_RANDOM_ACCESS
 
---
 
Abs62
да?
 
stupid_user
тогда я неправ и это с буферизацией i/o связано...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 20:46 28-11-2008 | Исправлено: akaGM, 20:53 28-11-2008
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Именно так.

Цитата:
FILE_FLAG_RANDOM_ACCESS
Indicates that the file is accessed randomly. The system can use this as a hint to optimize file caching.
 
FILE_FLAG_SEQUENTIAL_SCAN
Indicates that the file is to be accessed sequentially from beginning to end. The system can use this as a hint to optimize file caching. If an application moves the file pointer for random access, optimum caching may not occur; however, correct operation is still guaranteed.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:00 28-11-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
ок
 
stupid_user
можно подумать, что дельфийская assignfile() не на WinAPI основана...
чем она тебе не угодила?

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 21:06 28-11-2008
stupid_user

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
пишу библиотеку для c++ приложения. есть несколько функций для файловой системы, с использованием Handle файла, seek, потоки и т.п.  
AssignFile не поможет. Сишное приложение отправляет в библиотеку режим открытия файла (rt, rb, wb, ...) и ждет результат Handle файла. В дельфийских функциях я не нашел аналога этим режимам (rt, rb, ...). Думал, что на АПИ уж точно есть. ошибался

Всего записей: 292 | Зарегистр. 12-11-2006 | Отправлено: 21:16 28-11-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stupid_user

Цитата:
пишу библиотеку для c++ приложения
Сишное приложение

так какое всё же?

Цитата:
В дельфийских функциях я не нашел аналога этим режимам (rt, rb, ...)

Код:
var
  ft: text;
  fb: file of integer;
  i: integer = 14;
begin  
  assignfile(ft, '1.t');
  assignfile(fb, '1.b');
  rewrite(ft); // wt
  //reset(ft); // rt
  rewrite(fb); // wb
  //reset(fb); // rb
  write(ft, 'я типа текст'#13#10'да ещё и с числом...', i);
  write(fb, i);
  closefile(ft);
  closefile(fb);
end.

 
---
как вариант, пиши всё на С/С++

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 21:29 28-11-2008 | Исправлено: akaGM, 21:43 28-11-2008
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stupid_user
fopen возвращает не хэндл, она возвращает *FILE - указатель на поток.
И даже хэндл файла в CRT, с которым работают сишные функции - это не то же самое, что и хэндл файла в ОС, возвращаемый CreateFile. Это индекс структуры в массиве, одним из полей которой является хэндл ОС. Подозреваю, что проще будет изучить C/C++ и писать библиотеку на нём, чем эмулировать CRT на Дельфи.
 
И вообще, открывать файл функциями CRT в DLL, а работать с ним в основной программе - плохая идея. Легко нарваться на разные CRT в DLL и программе и получить access violation.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:44 28-11-2008 | Исправлено: Abs62, 21:53 28-11-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stupid_user
ещё как вариает, в С-части использовать createfile() или _lopen и тд, т.е. виндовутые версии, которые (естественно) присутствуют и в дельфях...
зачем гонять указатели на потоки меж библиотеками? что, открывается в одном месте, а пишется в другом?
тут уж встаёт вопрос об архитектуре программы...
 
и ваще, весь ввод/вывод надо делать в одном месте однообразно...
безобразно -- оно само получится...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 21:49 28-11-2008 | Исправлено: akaGM, 21:53 28-11-2008
Alamer

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте.
Пишу небольшую программу которая следит за активностью приложений и регулирует скорость utorrentа.
Пока что просто отслеживаю наличие процесса в памяти, но хотелось бы следить за его сетевой активностью. Тоесть шлет ли он пакеты.
Подскажите пожалуйста через что это лучше сделать.
 
Заранее спасибо
 
Так нашел AllocateAndGetTcpExTableFromStack.
Вытаскивает список открытых портов и пиды процессов.
единственное я не силен в сетях какие типы портов мне нужны

Цитата:
 
MIB_TCP_STATE_CLOSED: Result := 'CLOSED';
MIB_TCP_STATE_LISTEN: Result := 'LISTEN';
MIB_TCP_STATE_SYN_SENT: Result := 'SYN SENT';
MIB_TCP_STATE_SYN_RCVD: Result := 'SYN RECEIVED';
MIB_TCP_STATE_ESTAB: Result := 'ESTABLISHED';
MIB_TCP_STATE_FIN_WAIT1: Result := 'FIN WAIT 1';
MIB_TCP_STATE_FIN_WAIT2: Result := 'FIN WAIT 2';
MIB_TCP_STATE_CLOSE_WAIT: Result := 'CLOSE WAIT';
MIB_TCP_STATE_CLOSING: Result := 'CLOSING';
MIB_TCP_STATE_LAST_ACK: Result := 'LAST ACK';
MIB_TCP_STATE_TIME_WAIT: Result := 'TIME WAIT';
MIB_TCP_STATE_DELETE_TCB: Result := 'DELETE TCB';
 

 
Если приложение принимает данные какие у него типы портов открыты?

Всего записей: 65 | Зарегистр. 23-01-2006 | Отправлено: 08:25 02-12-2008 | Исправлено: Alamer, 10:37 02-12-2008
koderr



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте.
Столкнулся с незначительной, казалось бы, проблемой, которая поставила меня в тупик.
 
Написал приложение, использующее ComboBox. На Windows XP оно прекрасно работает. Попробовал запустить на Win2k SP4 - ComboBox не раскрывается, причем сообщения, посылаемые контролу, возвращают success. Попробовал на Win98SE - то же самое.
 
Код
 
Ресурсы
 
upd:
Проблема решена, нужно было всего лишь выставить высоту контрола побольше.

----------
The truth is out there...

Всего записей: 353 | Зарегистр. 22-06-2005 | Отправлено: 21:09 08-12-2008 | Исправлено: koderr, 21:21 08-12-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru