Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Рекомендуемые сообщения

есть пару вопросов по Win32Api:

1) Нужно работать с сокетами спомощью стандартных библиотек Windows. Таскать с собой WinSock контрол меня не прикалывает.

2) Нужен полный справочник по функиям GDI32.dll можно без примеров.

3) Есть ли какие нибудь функции для информации о дисках, получение директории ну и тд что связано с файлами. VB-шная функция dir() довольно медленная, а у меня довольно большая прога.

4) Есть функция mciSendString (winmm.dll)

Командами открываю и закрываю сидюк:

mciSendString "Set cdaudio door open wait", 0, 0, 0

mciSendString "Set cdaudio door closed wait", 0, 0, 0

Прикол в том что на компе могут быть несколько CD-приводов или например CD и DVD но функция открывает только первый... Мне бы открывать сидюк по букве его диска.

Ну и не совсем по Api:

5) Надо воспроизводить JavaScript подобно браузеру. JavaScript конечно знаю, но хотелось бы работать с библиотеками явы

6) Нужно описание заголовков клиента и сервера для протакола http

7) Нужно описание команд сервера и клиента для протокола ftp

Ссылка на комментарий
Поделиться на другие сайты

Gray Angel:

1. зачем таскать контрол, когда есть dll? Смотри в MSDN, там есть. Полезная книга - Ян Снайдер "Эффективное программирование TCP/IP"

Для поиска инфы используй слова-имена функций socket, accept, listen, bind - это все входит в библиотеку сокетов.

2. MSDN - есть просто все (почти все, на самом деле) и про GDI, и про user32 и про kernel32.....

Существует как в нете, так и в офлайновом виде - как правило, прилагается к VisualStudio.... Много полезного есть здесь

3. Там же. Только на апи это все иногда менее удобно, чем в функциях более высокого уровня. Начни с FindFirstFile, в доках, как правило написано, что и как искать этими ф-циями.

4. Хотел бы я знать :bye1:

5 - только направление могу указать - ищи JDK, там наверняка есть......

6 - Этот pdf - вероятно, деревянным языком написан, но это описание.....

7 - например, тут.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

4) Есть функция mciSendString (winmm.dll)

Командами открываю и закрываю сидюк:

mciSendString "Set cdaudio door open wait", 0, 0, 0

mciSendString "Set cdaudio door closed wait", 0, 0, 0

Прикол в том что на компе могут быть несколько CD-приводов или например CD и DVD но функция открывает только первый... Мне бы открывать сидюк по букве его диска.

---------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------

Данные функции работаю только с первым устройством в системе:

Открыть дверцу:

mciSendString( 'Set cdaudio door open wait', nil, 0, application.handle);

закрыть дверцу:

mciSendString( 'Set cdaudio door closed wait', nil, 0, application.handle);

-----------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------

Функция OpenCD открывает лоток CDROM. Параметр Drive - буква диска лоток которого необходимо открыть.

Функция CloseCD закрывает лоток CDROM. Параметр Drive - буква диска лоток которого необходимо закрыть.

.....

uses

... MMSystem;

function OpenCD(Drive : Char) : Boolean;

Var

Err : MciError;

OpenParm: TMCI_Open_Parms; 1

Flags : DWord;

S : String;

DeviceID : Word;

begin

Result:=false;

S:=Drive+':';

Flags:=mci_Open_Type or mci_Open_Element; // См. mci_Open

With OpenParm do

begin

dwCallback := 0;

lpstrDeviceType := 'CDAudio'; 2

lpstrElementName := PChar(S);

end;

Err := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm)); 3

IF Err<>0 Then exit;

DeviceID:=OpenParm.wDeviceID;

try

Err:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);

IF Err=0 Then exit;

Result:=True;

finally

mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm)); 4

end;

end;

function CloseCD(Drive : Char) : Boolean;

Var

Err : MciError;

OpenParm: TMCI_Open_Parms; 1

Flags : DWord;

S : String;

DeviceID : Word;

begin

Result:=false;

S:=Drive+':';

Flags:=mci_Open_Type or mci_Open_Element;

With OpenParm do

begin

dwCallback := 0;

lpstrDeviceType := 'CDAudio'; 2

lpstrElementName := PChar(S);

end;

Err := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm)); 3

IF Err<>0 Then exit;

DeviceID:=OpenParm.wDeviceID;

try

Err:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);

IF Err=0 Then exit;

Result:=True;

finally

mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm)); 4

end;

end;

*****************************************************************************

1 TMCI_Open_Parms = record

dwCallback: DWORD;

wDeviceID: MCIDEVICEID;

lpstrDeviceType: PAnsiChar;

lpstrElementName: PAnsiChar;

lpstrAlias: PAnsiChar;

end;

*****************************************************************************

2 '' (пустой) - автовыбор

'AVIVideo' - .Avi (аудио-видео файл)

'CDAudio' - аудио компакт-диск

'DAT' - файл видеоданных (чаще Mpeg-1)

'DigitalVideo' - цифровое видео

'MMMovie' - мультимедиа и анимация

'Other'- другое

'Overlay' - оверлей

'Scanner' - сканер

'Sequencer' - секвенсер

'VCR' - {описания я не нашел, в стандартном хелпе нет, скорее всего это какое-то видео устройство}

'Videodisc' - видеодиск

'WaveAudio' - цифровое аудио

******************************************************************************

3 mci_Open Флаг MCI_OPEN_TYPE должен использоваться всякий раз, когда устройство определяется в функции mciSendCommand. Если Вы открываете устройство устанавливая константу типа устройства, Вы должны установить флаг MCI_OPEN_TYPE_ID дополнительно к MCI_OPEN_TYPE. Список констант см. ниже.

Если флаг MCI_OPEN_SHAREABLE не установлен, когда устройство или файл уже открыты, все последующие команды MCI_OPEN для устройства или файла потерпят неудачу. Если устройство или файл уже открыто и этот флаг не установлен, вызов потерпит неудачу даже если бы первая команда открытия установила MCI_OPEN_SHAREABLE. Файлы открытые для MCISEQ.DRV и устройства MCIWAVE.DRV являются неразделяемыми(nonshareable).

Для того, чтобы использовать автоматический выбор типа (через данные в реестре), установите имя файла и расширение в элементе lpstrElementName структуры указанной в dwParam2, элемент lpstrDeviceType должен быть nil и установлен флаг MCI_OPEN_ELEMENT.

Дополнительные Флаги:

Следующие дополнительные флаги относятся к всем устройствам поддерживающим MCI_OPEN:

MCI_OPEN_ALIAS - Псевдоним заноситься в элемент lpstrAlias структуры указанной в dwParam2.

MCI_OPEN_SHAREABLE - Устройство или файл должно быть окрыть как общее(разделенное).

MCI_OPEN_TYPE - Имя или константа типа устройства заносится в элемент lpstrDeviceType структуры указанной в dwParam2.

MCI_OPEN_TYPE_ID - Младшее слово элемента lpstrDeviceType структуры указанной в dwParam2 содержит стандартный идентификатор типа устройства MCI, а старшее слово дополнительо содержит порядковый индекс устройства. Используйте этот флаг совместно с флагом MCI_OPEN_TYPE.{Прим. составителя: В оригинале указан элемент lpstrDeviceType, но он строковый и никакого младшего и старшего слова у него нет, поэтому самое близкое по смыслу - элемент wDeviceID, возможно надо его использовать.}

Следующие дополнительные флаги определяют состав устройств:

MCI_OPEN_ELEMENT - Имя файла включается в элемент lpstrElementName.

MCI_OPEN_ELEMENT_ID - Элемент lpstrElementName интерпретируется как DWORD и обозначает внутренне ID устройства.

Флаги анимации:

Следующие дополнительные флаги используются типом устройств анимации:

MCI_ANIM_OPEN_NOSTATIC - Устройство должно уменьшить число статических(системных) цветов в палитре до двух.

MCI_ANIM_OPEN_PARENT - Хенл родительского окна устанавливается в элементе hWndParent структуры указанной в dwParam2. Хенл родительского окнанеобходим для установки некоторых стилей окна.

MCI_ANIM_OPEN_WS - Стиль окна определяется в элементе dwStyle структуры указанной в dwParam2. Элемент dwStyle определяет стиль окна, которое драйвер будет создавать и отображать(дисплей), если приложение не обеспечило его. Эти параметры такие же как и в стилях используемые функцией CreateWindow (например, WS_CHILD, WS_OVERLAPPEDWINDOW, и WS_POPUP) См. WS_.

Для устройств анимации, параметр dwParam2 указывает на структуру TMCI_Anim_Open_Parms.

Флаги цифрового видео:

Следующие дополнительные флаги используются типом} устройств цифрового видео(digitalvideo):

MCI_DGV_OPEN_NOSTATIC - Устройство должно уменьшить число статических(системных) цветов в палитре. Это число цветов доступно для рендеринга(отрисовки) видеопотоком. Этот флаг относиться только к устройствам которые разделяют(share) палитру с Windows.

MCI_DGV_OPEN_PARENT - Хенл родительского окна устанавливается в элементе hWndParent структуры указанной в dwParam2.

MCI_DGV_OPEN_WS - Стиль окна определяется в элементе dwStyle структуры указанной в dwParam2.

Для устройств цифрового видео, параметр dwParam2 указывает на структуру TMCI_Anim_Open_Parms {в оригинале указана структура MCI_DGV_OPEN_PARMS, но так как она совпадает со структурой TMCI_Anim_Open_Parms, то разработчики Дельфи решили пойти на оптимизацию кода и убрали лишнюю структуру}.

Флаги видеооверлея(Video-overlay):

Следующие дополнительные флаги используются оверлейным устройством:

MCI_OVLY_OPEN_PARENT - Хенл родительского окна устанавливается в элементе hWndParent структуры указанной в dwParam2.

MCI_OVLY_OPEN_WS - Стиль окна определяется в элементе dwStyle структуры указанной в dwParam2.

Для оверлейных устройств, параметр dwParam2 указывает на структуру TMCI_Ovly_Open_Parms.

Флаги Waveaudio:

Следующий дополнительный флаг используется типом устройств waveaudio:

MCI_WAVE_OPEN_BUFFER - длинна буфера указывается в элементе dwBufferSeconds.

Для waveform-звуковых устройств, параметр dwParam2 указывает на структуру TMCI_Wave_Open_Parms. Драйвер MCIWAVE требует асинхронное waveform-звуковое устройство.

*******************************************************************************************

Сообщение MCI_CLOSE освобождает доступ к устройству или файлу. Все устройства принимают это сообщение.

Параметры:

mciId: Идентификатор устройства MCI, которое должно получить сообщение.

dwParam1: Флаги MCI_NOTIFY или MCI_WAIT.

dwParam2: Адрес структуры TMCI_Generic_Parms. (В оригинале говорится о структурах MCI_CLOSE_PARMS и MCI_REALIZE_PARMS, но ввиду того, что они одинаковы разработчики Дельфи решили использовать одну структуру вместо трех.)

Замечания

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

*******************************************************************************************

:dontgetit:

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...