По просьбе трудящихся выкладываю вот такой простенький исходник программки с помощью, которой можно получить ТИЦ и PR сайта путем выполнения POST запроса
Скрин примера
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,WinInet, StdCtrls;
type
TfrmMain = class(TForm)
Button1: TButton;
edtSite: TEdit;
lblTC_PR: TLabel;
lblSite: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
const
// дефолное название приложение через которое якобы происходит соединение
DefaultAppName ='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6';
function exam(msData: TMemoryStream):string;
function DataAvailable(hRequest: pointer; out Size: cardinal): BOOLEAN;
begin
Result := WinInet.InternetQueryDataAvailable(hRequest, Size, 0, 0);
end;
var
hInternet, hConnect, hRequest: pointer;
dwBytesRead, i, L: cardinal;
sTemp: AnsiString; // текст страницы
sHeader: String;
begin
Result:='';
try
hInternet := InternetOpen(PChar(DefaultAppName),INTERNET_OPEN_TYPE_PRECONFIG, Nil, Nil, 0);
if Assigned(hInternet) then
begin
// Открываем сессию
//http://ip-whois.net/pr_cy_check.php обратите внимание как записал в коде адрес сайта
hConnect := InternetConnect(hInternet, PWideChar('ip-whois.net'),INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 1);
if Assigned(hConnect) then
begin
// открываем запрос
hRequest := HttpOpenRequest(hConnect, PWideChar('POST'),
PWideChar('/pr_cy_check.php'), HTTP_VERSION, nil, Nil,
INTERNET_FLAG_KEEP_CONNECTION, 1);
sHeader:='Accept: */*';
HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader:= 'Content-Type: application/x-www-form-urlencoded';
HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader:= 'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader:= 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7';
HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
if Assigned(hRequest) then
begin
// Отправляем запрос
i := 1;
if HttpSendRequest(hRequest, nil, 0, msData.memory, msData.Size) then
begin
repeat
DataAvailable(hRequest, L); // Получаем кол-во принимаемых данных
if L = 0 then
break;
SetLength(sTemp, L + i);
if not InternetReadFile(hRequest, @sTemp[i], sizeof(L),dwBytesRead) then
break; // Получаем данные с сервера
inc(i, dwBytesRead);
until dwBytesRead = 0;
sTemp[i] := #0;
Result:=sTemp;
end;
end;
end;
end;
finally
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);
end;
end;
function TC_PR(aValue:string):string;
var
i:Integer;
TC,PR:string;
begin
i:=AnsiPos('</h2><h3>ТИЦ: ',aValue);
if i=0 then
begin
Result:='Неизвестно!';
Exit;
end;
Delete(aValue,1,i+length('</h2><h3>ТИЦ: ')-1);
i:=AnsiPos('</h3><h3>PR: ',aValue);
TC:=Copy(aValue,0,i-1);
Delete(aValue,1,i+length('</h3><h3>PR: ')-1);
i:=AnsiPos('</h3><br>',aValue);
PR:=Copy(aValue,0,i-1);
Result:='ТИЦ '+TC+' PR '+PR;
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
zapros:TStringStream;
sTemp:string;
begin
zapros:=TStringStream.Create;
zapros.WriteString('T1='+edtSite.Text+'&B1=T2=%D3%E7%ED%E0%F2%FC+%D2%C8%D6+%E8+PR');
sTemp:=exam(zapros);
if Length(sTemp)>0 then
lblTC_PR.Caption:=TC_PR(sTemp);
zapros.Free;
end;
end.
Скачать исходник проекта можно отсюда Download
Есть идея по созданию интересной программы?
среда, 29 декабря 2010 г.
четверг, 2 декабря 2010 г.
Конкурс на WebDelphi с неограниченным призовым фондом.
Ярлыки:
Delphi события
Хочу поздравить всех со вторым днем зимы и сообщить о прекрасном известии.
1 декабря 2010 года (т.е. вчера) начался конкурс по программированию с неограниченным призовым фондом ( все зависит от количества принявших в нем участие людей( 50 рублей за каждого нового конкурсанта), но начальный призовой фонд составляет 1000 рублей ).
Принять участие в конкурсе могут все программисты круг не ограничивается только Delphi (нас ни так много, но мы в тельняшках).
Если вы не профессионал то не беда, программу будут оценивать только по ее функционалу далекие от программирования люди следовательно и у вас есть шанс занять почетное первое место в этом конкурсе.
Правила и требования для участия в конкурсе можете просмотреть на сайте автора конкурса!
Желаю удачи!!!
1 декабря 2010 года (т.е. вчера) начался конкурс по программированию с неограниченным призовым фондом ( все зависит от количества принявших в нем участие людей( 50 рублей за каждого нового конкурсанта), но начальный призовой фонд составляет 1000 рублей ).
Принять участие в конкурсе могут все программисты круг не ограничивается только Delphi (нас ни так много, но мы в тельняшках).
Если вы не профессионал то не беда, программу будут оценивать только по ее функционалу далекие от программирования люди следовательно и у вас есть шанс занять почетное первое место в этом конкурсе.
Правила и требования для участия в конкурсе можете просмотреть на сайте автора конкурса!
Желаю удачи!!!
пятница, 19 ноября 2010 г.
Время простоя ПК
function CheckIddleTime: DWord;
var
LastInput: TLastInputInfo;
begin
LastInput.cbSize := SizeOf(TLastInputInfo);
GetLastInputInfo(LastInput);
Result := GetTickCount - LastInput.dwTime;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:= 'Время простоя: ' + vartostr(CheckIddleTime/1000)+' секунд(ы)';
end;
var
LastInput: TLastInputInfo;
begin
LastInput.cbSize := SizeOf(TLastInputInfo);
GetLastInputInfo(LastInput);
Result := GetTickCount - LastInput.dwTime;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:= 'Время простоя: ' + vartostr(CheckIddleTime/1000)+' секунд(ы)';
end;
четверг, 18 ноября 2010 г.
среда, 17 ноября 2010 г.
Файлы, проецируемые в память
Ярлыки:
Иститут
Технология файлов, проецируемых в память, является изящным средством для разделения ресурсов файловой системы между процессами.
При проецировании файла на адресное пространство процесса процесс может обращаться к содержимому файла так, как если бы файл был загружен в оперативную память.
Если несколько процессов выполняют проецирование одного и того же файла, то содержимое файла будет доступно для всех процессов, то есть позволит избежать загрузки множества экземпляров файла в оперативную память.
Для проецируемых файлов применяется 64-битная адресация, что позволяет использовать данную технологию для обработки сверхбольших (до 18 экзабайт) файлов, преодолевая, тем самым, ограничение на размер файла в 2 гигабайта.
При проецировании файла на адресное пространство процесса процесс может обращаться к содержимому файла так, как если бы файл был загружен в оперативную память.
Если несколько процессов выполняют проецирование одного и того же файла, то содержимое файла будет доступно для всех процессов, то есть позволит избежать загрузки множества экземпляров файла в оперативную память.
Для проецируемых файлов применяется 64-битная адресация, что позволяет использовать данную технологию для обработки сверхбольших (до 18 экзабайт) файлов, преодолевая, тем самым, ограничение на размер файла в 2 гигабайта.
пятница, 12 ноября 2010 г.
Программа для информирования пользователя о смене языка ввода 2 (Написана на Delphi)
Ярлыки:
Полезное
Немного изменил интерфейс, добавил то, что просили
Если нужен дополнительный функционал пишите.
Скачать программу под Windows XP SP3 можно отсюда Download
Скачать программу под Windows XP SP3 и Windows 7 64 можно отсюда Download
Как и просили исходник Windows 7 64
Так как нет возможности создания 64-х разрядной DLL сделал по таймеру))
Если нужен дополнительный функционал пишите.
Скачать программу под Windows XP SP3 можно отсюда Download
Скачать программу под Windows XP SP3 и Windows 7 64 можно отсюда Download
Как и просили исходник Windows 7 64
Так как нет возможности создания 64-х разрядной DLL сделал по таймеру))
пятница, 5 ноября 2010 г.
Программа для информирования пользователя о смене языка ввода (Написана на Delphi)
Ярлыки:
Полезное
Программа информирует вас о смене языка ввода так, как это не всегда происходит при нажатии комбинации клавиш которые, как раз отвечают за это дело, но эта программа известит вас об этом звуковым сигналом или сменой указателя мыши и гудком все это дело настраивается без проблем в программе.
Программа работает в ОС Windows XP SP3
Скриншот программы
Программа бесплатная так, что вы ее используете на свой страх и риск!
Я не несу ответственности за вред который вы причините используя эту программу!
ВИРУСОВ НЕТ!
Скачать программу под Windows XP SP3 можно отсюда Download
Скачать программу под Windows 7 64 можно отсюда Download
В дополнение ко все хочу сказать, что я не пытался сделать PuntoSwithcher, слишком много автоматизации иногда мешает им ни когда не пользовался и не собираюсь, каждому своё!
Программа работает в ОС Windows XP SP3
Скриншот программы
Программа бесплатная так, что вы ее используете на свой страх и риск!
Я не несу ответственности за вред который вы причините используя эту программу!
ВИРУСОВ НЕТ!
Скачать программу под Windows XP SP3 можно отсюда Download
Скачать программу под Windows 7 64 можно отсюда Download
В дополнение ко все хочу сказать, что я не пытался сделать PuntoSwithcher, слишком много автоматизации иногда мешает им ни когда не пользовался и не собираюсь, каждому своё!
понедельник, 1 ноября 2010 г.
Google Chrome Frame for Delphi 2010
Ярлыки:
Компоненты
Компонент для использования функций Google Chrome в своих приложениях или же написания своего браузера на основе Google Chrome в Delphi.
Скриншот примера идущего в комплекте с компонентом.
ActiveX из npchrome_frame.dll не импортируется полностью и один хороший человек написал компонент на радость пользователям Delphi сайт
Компонент Google Chrome Frame для Delphi 2010 можно скачать отсюда Download
Скриншот примера идущего в комплекте с компонентом.
ActiveX из npchrome_frame.dll не импортируется полностью и один хороший человек написал компонент на радость пользователям Delphi сайт
Компонент Google Chrome Frame для Delphi 2010 можно скачать отсюда Download
суббота, 23 октября 2010 г.
Организация межзадачного обмена
Ярлыки:
Иститут
Задание. Организовать работу программы-сервера и нескольких программ клиентов следующим образом:
Сервер предоставляет клиентам кокой-либо из своих ресурсов (например, собственное окно)
Клиенты подключаются к серверу и начинают запись в окно, причем первый клиент пишет только «1», второй – только «2», и т.д. Клиентов может быть произвольное количество, но не менее пяти.
Если клиент подключается к серверу в монопольном режиме, он получает исключительные права на использование ресурса сервера. Все остальные клиенты, пытающиеся подключиться в данный момент, не должны получить доступ к ресурсу сервера и должны оказаться в очереди на обслуживание.
воскресенье, 17 октября 2010 г.
MEMORY_BASIC_INFORMATION структура
Ярлыки:
Windows
Содержит сведения о диапазоне страниц в виртуальном адресном пространстве процесса. Функции VirtualQuery и VirtualQueryEx использовать эту структуру.
Синтаксис Delphi
type
PMemoryBasicInformation = ^TMemoryBasicInformation;
_MEMORY_BASIC_INFORMATION = record
BaseAddress : Pointer;
AllocationBase : Pointer;
AllocationProtect : DWORD;
RegionSize : DWORD;
State : DWORD;
Protect : DWORD;
Type_9 : DWORD;
end;
{$EXTERNALSYM _MEMORY_BASIC_INFORMATION}
TMemoryBasicInformation = _MEMORY_BASIC_INFORMATION;
MEMORY_BASIC_INFORMATION = _MEMORY_BASIC_INFORMATION;
{$EXTERNALSYM MEMORY_BASIC_INFORMATION}
Члены
Требования
Синтаксис Delphi
type
PMemoryBasicInformation = ^TMemoryBasicInformation;
_MEMORY_BASIC_INFORMATION = record
BaseAddress : Pointer;
AllocationBase : Pointer;
AllocationProtect : DWORD;
RegionSize : DWORD;
State : DWORD;
Protect : DWORD;
Type_9 : DWORD;
end;
{$EXTERNALSYM _MEMORY_BASIC_INFORMATION}
TMemoryBasicInformation = _MEMORY_BASIC_INFORMATION;
MEMORY_BASIC_INFORMATION = _MEMORY_BASIC_INFORMATION;
{$EXTERNALSYM MEMORY_BASIC_INFORMATION}
Члены
- BaseAddress
- Указатель на базовый адрес региона страниц.
- AllocationBase
- Указатель на базовый адрес диапазона страниц ассигнован функцией VirtualAlloc. Страница, на которую указывает член BaseAddress, содержится в пределах этого диапазона распределения.
- AllocationProtect
- Выбор защиты памяти, когда область была первоначально ассигнована. Этот участник может быть одной из констант защиты памяти или 0, если у гостя нет доступа.
- RegionSize
- Размер в регионе, начиная с базового адреса, в которой все страницы имеют идентичные атрибуты, в байтах.
- State
- Состояние страницы в регионе. Этот член может быть одним из следующих значений.
Состояние Смысл
- MEM_COMMIT
- 0x1000
Указывает на фиксированные страницы, для которых физическое хранение было выделено, или в памяти или в страничном файле на диске.
- MEM_FREE
- 0x10000
Указывает свободных страниц, не доступных для вызывающего процесса и которые будут выделены. Для свободных страниц информация в AllocationBase, AllocationProtect, Protect, тип и элементы не определены.
- MEM_RESERVE
- 0x2000
Указывает на зарезервированные страницы, где диапазон виртуального адресного пространства процесса зарезервирован без любого физического выделяемого хранения. Для зарезервированных страниц информация в элементе защита не определена.
- Protect
- Защита доступа страницы в регионе. Этот член является одним из значений, перечисленных для элемента AllocationProtect.
- Type
- Тип страниц в регионе. Определены следующие типы.
Тип Смысл
- MEM_IMAGE
- 0x1000000
Указывает, что страницы памяти в пределах региона сопоставляются в представление изображения раздела.
- MEM_MAPPED
- 0x40000
Указывает, что страницы памяти в пределах региона сопоставляются в представление раздела.
- MEM_PRIVATE
- 0x20000
Указывает на страницах памяти в пределах частного региона (что не разделяется другими процессами).
Чтобы позволить отладчику отладить цель, которая используется на различной архитектуре (32-битовый против 64-битового), используйте одну из явных форм этой структуры.
Копия
typedef struct _MEMORY_BASIC_INFORMATION32 {
DWORD BaseAddress;
DWORD AllocationBase;
DWORD AllocationProtect;
DWORD RegionSize;
DWORD State;
DWORD Protect;
DWORD Type;
} MEMORY_BASIC_INFORMATION32, *PMEMORY_BASIC_INFORMATION32;
typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 {
ULONGLONG BaseAddress;
ULONGLONG AllocationBase;
DWORD AllocationProtect;
DWORD __alignment1;
ULONGLONG RegionSize;
DWORD State;
DWORD Protect;
DWORD Type;
DWORD __alignment2;
} MEMORY_BASIC_INFORMATION64, *PMEMORY_BASIC_INFORMATION64;
Требования
Минимальная поддерживаемая клиента | Windows 2000 Professional |
|---|---|
Минимальный поддерживаемый сервер | Windows 2000 Server |
Заголовок | Windows.pas |
Подписаться на:
Сообщения (Atom)
