Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2006-04-10

Проблема с переключением языка в XP [D3, Win95/98, WinXP]

Доброго дня!
У меня возникла проблема с переключением языка ввода в ХР. Ситуация
такая. Есть приложение написанное на Delphi 3. В windows 98 работает без
проблем, а вот в ХР переключение языка ввода работает странно. Сочетание
клавишь то работает, то не работает, при этом в языковой панели
обозначение языка вообще не меняется. Если менять язык мышкой, то язык
меняется, а вот обозначения языка со второго раза. Например, что бы
переключиться мышкой на русский, надо два раза щелкнуть. С первого раза
русский уже работает, со второго меняется обозначение на русский.
Что можно с этим всем сделать?

   Oleg Ponomarev 2006-04-10 20:55:53 (#536224)

Re: Как открыть окно свойств текущего соединения сИнетом?

>Hello comp,
>
> Собственно, мне нужно через определенные промежутки времени
>считывать сколько байт попало мне в комп. Я думаю это сделать,
>выцарапывая эту инфу из окна свойств соединения. Хотя если есть другой
>способ, будьте добры, поделитесь.
>
>--
> Вадим Шешунов

Как вариант можно использовать следующий пример
type
TSessionInfo502 = packed record
Sesi502_cname: PWideChar;
Sesi502_username: PWideChar;
Sesi502_num_opens: DWORD;
Sesi502_time: DWORD;
Sesi502_idle_time: DWORD;
Sesi502_user_flags: DWORD;
Sesi502_cltype_name: PWideChar;
Sesi502_transport: PWideChar;
End;
PSessionInfo502 = ^TSessionInfo502;
TSessionInfo502Array = array[0..512] of TSessionInfo502;
PSessionInfo502Array = ^TSessionInfo502Array;

type
TMibIfRow = packed record
wszName : array[0..255] of WideChar;
dwIndex : DWORD;
dwType : DWORD;
dwMtu : DWORD;
dwSpeed : DWORD;
dwPhysAddrLen : DWORD;
bPhysAddr : array[0..7] of Byte;
dwAdminStatus : DWORD;
dwOperStatus : DWORD;
dwLastChange : DWORD;
dwInOctets : DWORD;
dwInUcastPkts : DWORD;
dwInNUCastPkts : DWORD;
dwInDiscards : DWORD;
dwInErrors : DWORD;
dwInUnknownProtos : DWORD;
dwOutOctets : DWORD;
dwOutUCastPkts : DWORD;
dwOutNUCastPkts : DWORD;
dwOutDiscards : DWORD;
dwOutErrors : DWORD;
dwOutQLen : DWORD;
dwDescrLen : DWORD;
bDescr : array[0..255] of Char;
end;
TMibIfArray = array [0..512] of TMibIfRow;
PMibIfRow = ^TMibIfRow;
PMibIfArray = ^TMibIfArray;

type
TMibIfTable = packed record
dwNumEntries : DWORD;
Table : TMibIfArray;
end;
PMibIfTable = ^TMibIfTable;

var
GetIfTable:function( pIfTable : PMibIfTable;
pdwSize : PULONG;
bOrder : Boolean ): DWORD; stdcall;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
FLibHandle : THandle;
Table: TMibIfTable;
i : integer;
Size : integer;
begin
ListView1.Items.BeginUpdate;
ListView1.Items.Clear; //Очищаем список
FLibHandle := LoadLibrary('IPHLPAPI.DLL'); //Загружаем библиотеку
if FLibHandle = 0 then Exit;
@GetIfTable := GetProcAddress(FLibHandle, 'GetIfTable');
if not Assigned(GetIfTable) then
begin
FreeLibrary(FLibHandle);
Close;
end;
Size := SizeOf(Table);
if GetIfTable(@Table, @Size, false ) = 0 then //Выполняем функцию
for i:= 0 to Table.dwNumEntries-1 do begin
with ListView1.Items.Add do begin //Выводим результаты
Caption := String(Table.Table[i].bDescr); //Наименование интерфейса
SubItems.Add(IntToStr(Table.Table[i].dwInOctets)); //Всего принято байт
SubItems.Add(IntToStr(Table.Table[i].dwOutOctets)); //Всего отправлено
байт
end;
end;
ListView1.Items.EndUpdate;
FreeLibrary(FLibHandle);
end;

С уважением, Padre Mortius

Номер выпуска : 5230
Возраст листа : 932 (дней)
Количество подписчиков : 540
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/536223
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2006-04-10 20:55:19 (#536223)

Re[2]: Как открыть окно свойств текущего соединения с Инетом?

A> В 95/98 виндах - чтение определенных ветвей реестра
A> (из HKEY_DYN_DATA).
A> В 2K/XP - через PDH... хм, в мсдн пишут можно тоже через реестр
A> (из HKEY_PERFORMANCE_DATA).

A> Могу кинуть рабочий исходник монитора lan/dialup (для win98) или пример
A> из мсдн (для win2K/XP).

Спасибо, AleX. Если не затруднит, киньте в личку пример для ХР.
Кстати, в реестре я не нашел ветки HKEY_PERFORMANCE_DATA - у меня XP
Professional 2002 SP2.

   Вадим Шешунов 2006-04-10 14:10:36 (#536060)

Re: Как открыть окно свойств текущего соединения с Инетом?

Здравствуйте, Вадим Шешунов!

> Собственно, мне нужно через определенные промежутки времени
> считывать сколько байт попало мне в комп. Я думаю это сделать,
> выцарапывая эту инфу из окна свойств соединения. Хотя если есть другой
> способ, будьте добры, поделитесь.

В 95/98 виндах - чтение определенных ветвей реестра
(из HKEY_DYN_DATA).
В 2K/XP - через PDH... хм, в мсдн пишут можно тоже через реестр
(из HKEY_PERFORMANCE_DATA).

Могу кинуть рабочий исходник монитора lan/dialup (для win98) или пример
из мсдн (для win2K/XP).

С уважением, AleX

Номер выпуска : 5228
Возраст листа : 932 (дней)
Количество подписчиков : 540
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/535859
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2006-04-10 04:43:28 (#535859)