Многопоточный Прокси чекер Писал для себя на досуге, вот подумал, может кому-нибудь понадобится=) Многопоточный Прокси чекер возможности....ээмм.. 1. Чекать прокси хттп и соксы 2. При старте прога берет список с файла proxies.txt Скачать: I'm hope this link alive=)
Иногда бывает пишу всякие безделушки, just fo fun. Может будут кому полезны. 1. Transparency Controller Простая программа для управления прозрачностью у произвольных окон. Так же позволяет применить к любому окну эффект Aero Glass (2 метода). Особенности: Полностью настраиваемые горячие клавиши; Возможность применения Aero Glass к произвольному окну; Возможность применения эффекта Aero Glass к заданным программам автоматически; Иконка в трее (для изменения настроек, либо выхода из программы); Возможность задания шага изменения прозрачности. (кликабельно) Скачать бинарник и исходники можно на GitHub (на английском) Для тех, кто предпочитает русский интерфейс Для тех, кто какой-то другой — изменить его не составит труда, все строковые константы вынесены в Settings проекта. Обязательно иметь установленный .NET Framework 2.0 или выше. 2. Screen Blocker Каждому из нас, наверно, приходилось блокировать компьютер, чтобы во время отсутствия никто ничего не натворил. Это программа поможет решить эту проблему. Чем это лучше Win+L спросите вы, — а тем, что можно спокойно наблюдать за происходящим на экране, но при этом быть уверенным, что без пароля никто компьютером не воспользуется. Особенности: Изменяемый пароль для разблокировки компьютера; Возможность наблюдать за тем, что происходит на компьютере во время блокировки; Неубиваемость программы (запускается на отдельном, защищенном рабочем столе, полностью изолированном от внешних воздействий); Приятный интерфейс с, уже наверное не модным, Aero Glass (работает даже на XP!). (кликабельно) ВАЖНО: Пароль по-умолчанию пустая строка (вводить ничего не нужно). Пароль всегда можно изменить. Скачать бинарник и исходники можно здесь . 3. Forex Lot Compute Удобная программа для увлекающихся торговлей на рыне Forex. Помогает быстро вычислить необходимый лот для торговли в соответствии с вашими рисками. Особенности: Интерфейс в стиле Metro; Модульная структура позволяет самостоятельно написать и использовать желаемый провайдер котировок; Очень простой программный интерфейс для создания собственных модулей-провайдеров котировок. (необходимо реализовать лишь один метод, остальное программа берет на себя! В папке Providers содержится уже написанные провайдеры котировок. Для использования необходимо положить любой из них рядом с исполняемым файлом. Скачать бинарник и исходники можно здесь . Обязательно иметь установленный .NET Framework 4.0 или выше.
Translit текста Смысл программы довольно прост.Бывает, что при переписке, приходится менять раскладку клавиатуры,в результате чего получается что-то похожее на это <<Ghbdtn!Rfr ltkf&>>. Данная программа поможет избавиться от этих проблем. Использование -Выделяем текст который необходимо перевести,и жмем ctrl+F1 -текст примет читабельный вид. Недостатки -Перевод не работает в ICQ(и некоторых других приложениях).Но думаю,что в скором времени это будет исправлено. -------------------------------- В хроме и firefox всё работает без проблем(остальное не тестировал,но думаю проблем не возникнет),в текстовом редакторе тоже всё ок.Есть возможность добавить программу в автозагрузку. Какой в ней смысл?Уже есть Punto Switcher! Да,есть.Но лично меня он бесит,т.к текст переводится в совсем не нужный мне момент,а здесь я сам могу выбрать когда и какой текст мне переводить. Изначально прогу писал для личного пользования.Может кому-нибудь понравится, и кто-то захочет помочь в разработке,я буду только рад)Исходник и саму прогу можно скачать тут P.S Компилировал в Delphi 2010.
ConEd -- программа, созданая помочь в обработке больших текстовых файлов. Делалась для собственых нужд, так что user-friendly сомнительный. http://rghost.ru/38399141
Vk_Messages В интернете подобных не нашел,точнее нашел,но поддержка её закончилась в 2011 году...Прогу писал для себя,и естественно остался очень доволен Смысл в том,что если приходит новое сообщение Вконтакте,то появлялось звуковое оповещение.Вконтакте оно тоже есть,но этот "щелчок" я не всегда слышу,особенно когда играю во что-нибудь Программа получилась довольно простой,в большей части из-за компонентов.В общем,выкладываю сюда,может она еще кому-то нужна будет.Если кому интересен исходник-выложу исходник) Компилировал в Delphi 2010 Сторонние компоненты: AlphaContrlos Программа Исходник Update: обновил программу,все изменения в файле history.txt Update:создал Группу в Vk все обновления в программе будут поститься там.Здесь больше ничего обновлять уже не буду.
Заметь, я просил исходник, а не две очевидные строчки как это лучше сделать. Есть много путей, мне нужен исходник.
Как-то понадобилась база ФИО из 3К записей. Искать в сети не было настроения. На глаза попался сайт rusprofile.ru. Короче все вылилось в грабер имен для этого сайта. Rusprofile.ru Name Graber Загрузить
Писал для себе, но может кому будет полезным. Что умеет: показывает аккорды распознает аккорды связь гитарного грифа с нотами (показывает где можно сыграть определенные ноты) поддерживаются разные строи гитары можно составлять и воспроизводить музыку разные инструменты для воспроизведения Как пользоваться: Лады\ноты можно выбирать (правая кнопка мыши). Левой кнопкой проиграть звук (звучит, пока кнопка не отпущена) Как составлять музыку: Пишем через запятую, без пробелов, ноты, с указанием октав (A2,G3,C4). либо пишем нужный аккорд, начиная строку с символа @, потом указываем ноту (с октавой или без) аккорда и через пробел его тип (@A3 m - Ля минор 3-й октавы) Более подробно описано в Changelog.txt Проект находится на ГитХабе. Для запуска необходим .NET Framework 4(Client Profile версия тоже сойдет)
Писал для личных целей. Программа проверяет валидность DLE сайтов по списку. Исходники + *.exe на Sendspace - click for download Исходный код: Code: unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Buttons, SyncObjs, Menus, IdHTTP, IdCompressorZLib; (* Главный класс *) type TMainForm = class(TForm) GBListHost: TGroupBox; LBHosts: TListBox; GBSpisok: TGroupBox; PBar: TProgressBar; REGood: TRichEdit; REBad: TRichEdit; BBStartCheck: TBitBtn; PopupMenu: TPopupMenu; NLoad: TMenuItem; NClear: TMenuItem; NSort: TMenuItem; OD: TOpenDialog; LGood: TLabel; LBad: TLabel; procedure BBStartCheckClick(Sender: TObject); procedure EndThread(Sender: TObject); procedure NLoadClick(Sender: TObject); procedure NClearClick(Sender: TObject); procedure NSortClick(Sender: TObject); procedure REGoodChange(Sender: TObject); procedure REBadChange(Sender: TObject); private { Private declarations } procedure CountHost; public { Public declarations } end; (* Класс потока *) type TThreadCheck = class(TThread) class var CheckOn : Boolean; class var Stop : Boolean; private { Private declarations } protected procedure Execute; override; end; var MainForm: TMainForm; CS : TCriticalSection; ThrCount : Integer; IndexCheck : Integer; implementation {$R *.dfm} procedure TMainForm.BBStartCheckClick(Sender: TObject); var I, CountThread: Integer; begin if TThreadCheck.CheckOn then Exit; if LBHosts.Items.Count <= 0 then begin MessageBox(0, 'Загрузите список...', 'Error', MB_OK + MB_ICONSTOP); Exit; end; PBar.Position := 0; PBar.Min := 0; PBar.Max := LBHosts.Items.Count; CS := TCriticalSection.Create; IndexCheck := 0; ThrCount := 0; TThreadCheck.CheckOn := True; TThreadCheck.Stop := False; (* Проверка потоков *) CountThread := 1; if LBHosts.Items.Count > 100 then CountThread := 10; if LBHosts.Items.Count > 300 then CountThread := 30; if LBHosts.Items.Count > 500 then CountThread := 50; for I := 1 to CountThread do begin Application.ProcessMessages; with TThreadCheck.Create(True) do begin FreeOnTerminate := True; Priority := tpLowest; OnTerminate := Self.EndThread; Resume; end; end; BBStartCheck.Enabled := False; end; procedure TMainForm.CountHost; begin if LBHosts.Items.Count > 0 then GBListHost.Caption := 'Список сайтов | ' + IntToStr(LBHosts.Items.Count) else GBListHost.Caption := 'Список сайтов'; end; procedure TMainForm.EndThread(Sender: TObject); begin Dec(ThrCount); if ThrCount = 0 then begin TThreadCheck.CheckOn := False; TThreadCheck.Stop := True; FreeAndNil(CS); PBar.Position := LBHosts.Items.Count; BBStartCheck.Enabled := True; MessageBox(0, PWideChar('Проверка успешно завершена!' + #13#10 + 'Хороших сайтов: ' + IntToStr(REGood.Lines.Count) + #13#10 + 'Плохих сайтов: ' + IntToStr(REBad.Lines.Count)), 'Info', MB_OK + MB_ICONINFORMATION); PBar.Position := 0; end; end; procedure TMainForm.NClearClick(Sender: TObject); begin LBHosts.Clear; CountHost; end; procedure TMainForm.NLoadClick(Sender: TObject); begin OD.InitialDir := GetCurrentDir; OD.FileName := ''; LBHosts.Clear; if OD.Execute then begin LBHosts.Items.LoadFromFile(OD.FileName); end else Exit; CountHost; end; procedure TMainForm.NSortClick(Sender: TObject); var TMP : TSTringList; begin if LBHosts.Items.Count <= 0 then begin MessageBox(0, 'Не возможно сортировать список...', 'Error', MB_OK + MB_ICONSTOP); Exit; end; TMP := TStringList.Create; try TMP.Sorted := True; TMP.Assign(LBHosts.Items); LBHosts.Clear; LBHosts.Items.Assign(TMP); finally FreeAndNil(TMP); end; CountHost; end; procedure TMainForm.REBadChange(Sender: TObject); begin LBad.Caption := 'Кол-во: ' + IntToStr(REBad.Lines.Count); end; procedure TMainForm.REGoodChange(Sender: TObject); begin LGood.Caption := 'Кол-во: ' + IntToStr(REGood.Lines.Count); end; procedure TThreadCheck.Execute; var HTTP : TIdHTTP; Compress : TIdCompressorZLib; S, Url : String; begin InterlockedIncrement(ThrCount); Sleep(Random(1000)); try while (not Stop) do begin // not Stop (* Создаём HTTP *) HTTP := TIdHTTP.Create(nil); Compress := TIdCompressorZLib.Create(nil); HTTP.HandleRedirects := True; HTTP.AllowCookies := True; HTTP.Compressor := Compress; HTTP.ReadTimeout := 10000; HTTP.ConnectTimeout := 10000; (* Заголовки для сайта *) HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'; HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; HTTP.Request.AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; HTTP.Request.Connection := 'keep-alive'; try CS.Enter; if IndexCheck >= MainForm.LBHosts.Items.Count then exit; Url := MainForm.LBHosts.Items.Strings[IndexCheck]; Inc(IndexCheck); finally CS.Leave; end; (* Проверка ссылки *) Url := LowerCase(Url); if Pos('http://', Url) > 0 then Url := StringReplace(Url, 'http://', '', [rfReplaceAll, rfIgnoreCase]); if Pos('www.', Url) > 0 then Url := StringReplace(Url, 'www.', '', [rfReplaceAll, rfIgnoreCase]); if Pos('/', Url) > 0 then Url := StringReplace(Url, '/', '', [rfReplaceAll, rfIgnoreCase]); Url := 'http://' + Url; (* Заходим на сервер *) try S := ''; S := HTTP.Get(Url); except end; Synchronize(procedure begin MainForm.PBar.Position := MainForm.PBar.Position + 1; end); (* Проверка ответа от сервера *) if (Pos('do=register', S) > 0) or (Pos('do=register', S) > 0) or (Pos('do=lostpassword', S) > 0) then begin (* Нормальный DLE *) Synchronize(procedure begin MainForm.REGood.SelStart := Length(MainForm.REGood.Text); MainForm.REGood.Lines.Append(Url); end); end else begin (* Плохой DLE *) Synchronize(procedure begin MainForm.REBad.SelStart := Length(MainForm.REBad.Text); MainForm.REBad.Lines.Append(Url); end); end; (* Чистим за собой :) *) FreeAndNil(HTTP); FreeAndNil(Compress); end; // not Stop finally end; end; end. P.S. Надеюсь кому-то пригодится!
Небольшой флудер с HTTP прокси для Ask.fm - был создан для себя можно сказать на коленках) ну всё же проверен несколько раз) MainUnit.pas Code: unit MainUnit; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ComCtrls, System.SyncObjs, Vcl.ExtCtrls, Vcl.Imaging.pngimage, ShellAPI; type TMainForm = class(TForm) GBFlooderSettings: TGroupBox; Label1: TLabel; EUserName: TEdit; Label2: TLabel; EFileQuestions: TEdit; BBStart: TBitBtn; BBStop: TBitBtn; GBProxySettings: TGroupBox; Label3: TLabel; ETimeOutConnect: TEdit; Label4: TLabel; EFileProxy: TEdit; SBar: TStatusBar; TimerUpdate: TTimer; ImgLogo: TImage; Label5: TLabel; EThreadCount: TEdit; procedure EndThreadBrute(Sender: TObject); procedure BBStartClick(Sender: TObject); procedure BBStopClick(Sender: TObject); procedure TimerUpdateTimer(Sender: TObject); procedure ImgLogoClick(Sender: TObject); procedure EThreadCountChange(Sender: TObject); private { Private declarations } procedure FormOff; procedure FormOn; public { Public declarations } end; var MainForm: TMainForm; (* Глобальные переменные *) CS : TCriticalSection; ThreadCount, ErrorCount, SendCount : Integer; FileProxy, FileQuestion : TextFile; implementation {$R *.dfm} uses ThreadFlooderAskUnit; procedure TMainForm.BBStartClick(Sender: TObject); var I : Integer; begin if TThreadFlooderAsk.OnWork then begin MessageBox(0, 'Threads already work.', 'Error', MB_OK + MB_ICONSTOP); Exit; end; if StrToInt(ETimeOutConnect.Text) < 5000 then begin MessageBox(0, PChar('Min proxy timeout connect - 5000 msek.'), 'Error', MB_OK + MB_ICONSTOP); Exit; end; (* Проверка файла вопросов *) if not FileExists(GetCurrentDir + '/' + EFileQuestions.Text) then begin MessageBox(0, PChar('Not found questions file - ' + EFileQuestions.Text + '.'), 'Error', MB_OK + MB_ICONSTOP); Exit; end; (* Проверка файла прокси *) if not FileExists(GetCurrentDir + '/' + EFileProxy.Text) then begin MessageBox(0, PChar('Not found proxy file - ' + EFileProxy.Text + '.'), 'Error', MB_OK + MB_ICONSTOP); Exit; end; FormOff; (* Открываем файл на чтение *) AssignFile(FileQuestion, GetCurrentDir + '/' + EFileQuestions.Text); FileMode := fmOpenRead; Reset(FileQuestion); AssignFile(FileProxy, GetCurrentDir + '/' + EFileProxy.Text); FileMode := fmOpenRead; Reset(FileProxy); (* Настраиваем глобалки *) ThreadCount := 0; SendCount := 0; ErrorCount := 0; CS := TCriticalSection.Create; (* Запускаем потоки *) TimerUpdate.Enabled := True; TThreadFlooderAsk.OnWork := True; TThreadFlooderAsk.Stop := False; for I := 1 to StrToInt(EThreadCount.Text) do begin Application.ProcessMessages; with TThreadFlooderAsk.Create(True, EUserName.Text, ETimeOutConnect.Text) do begin FreeOnTerminate := True; Priority := tpLowest; OnTerminate := Self.EndThreadBrute; Resume; end; Inc(ThreadCount); end; end; procedure TMainForm.BBStopClick(Sender: TObject); begin if TThreadFlooderAsk.OnWork then TThreadFlooderAsk.Stop := True; end; procedure TMainForm.EndThreadBrute(Sender: TObject); begin Dec(ThreadCount); if ThreadCount = 0 then begin TThreadFlooderAsk.OnWork := False; TThreadFlooderAsk.Stop := True; FreeAndNil(CS); CloseFile(FileProxy); CloseFile(FileQuestion); FormOn; end; end; procedure TMainForm.EThreadCountChange(Sender: TObject); begin if StrToInt(EThreadCount.Text) = 0 then EThreadCount.Text := '1'; end; procedure TMainForm.FormOff; begin EUserName.Enabled := False; EFileQuestions.Enabled := False; ETimeOutConnect.Enabled := False; EFileProxy.Enabled := False; EThreadCount.Enabled := False; BBStart.Enabled := False; BBStop.Enabled := True; end; procedure TMainForm.FormOn; begin EUserName.Enabled := True; EFileQuestions.Enabled := True; ETimeOutConnect.Enabled := True; EFileProxy.Enabled := True; EThreadCount.Enabled := True; BBStart.Enabled := True; BBStop.Enabled := False; end; procedure TMainForm.ImgLogoClick(Sender: TObject); begin ShellExecute(0, 'Open', PChar('https://forum.antichat.ru/member.php?u=104415'), nil, nil, SW_SHOWNORMAL); end; procedure TMainForm.TimerUpdateTimer(Sender: TObject); begin SBar.Panels[0].Text := 'Потоки: ' + IntToStr(ThreadCount) + ' шт. / Отправленно: ' + IntToStr(SendCount) + ' шт. / Ошибок: ' + IntToStr(ErrorCount) + ' шт.'; if not TThreadFlooderAsk.OnWork then TimerUpdate.Enabled := False; end; end. ThreadFlooderAskUnit.pas Code: unit ThreadFlooderAskUnit; interface uses System.Classes, System.SysUtils, System.SyncObjs, Winapi.Windows, IdHTTP, IdCompressorZLib; type TThreadFlooderAsk = class(TThread) class var OnWork : Boolean; class var Stop : Boolean; private { Private declarations } ALoginFlood : String; AProxyTimeOut : Integer; protected procedure Execute; override; public constructor Create(CreateSuspennded: Boolean; const LoginFlood, ProxyTimeOut: String); end; implementation { TThreadFlooderAsk } uses MainUnit; constructor TThreadFlooderAsk.Create(CreateSuspennded: Boolean; const LoginFlood, ProxyTimeOut: String); begin inherited Create(CreateSuspennded); ALoginFlood := LoginFlood; AProxyTimeOut := StrToInt(ProxyTimeOut); end; procedure TThreadFlooderAsk.Execute; var HTTP : TIdHTTP; Compress : TIdCompressorZLib; Post : TStringList; Response, Question, Proxy, IP, AUTH_TOKEN : String; Port : Integer; FlagProxy : Boolean; begin Post := TStringList.Create; try while (not Stop) do begin (* Читаем файл вопросов *) try CS.Enter; try (* Проверяем конец строк *) if Eof(FileProxy) then break; (* Проверяем конец строк *) if Eof(FileQuestion) then break; (* Читаем строку *) Readln(FileQuestion, Question); except end; finally CS.Leave; end; (* Крутим цикл прокси *) FlagProxy := True; while FlagProxy and (not Stop) do begin (* Читаем файл прокси *) try CS.Enter; try (* Проверяем конец строк *) if Eof(FileProxy) then break; (* Читаем строку *) Readln(FileProxy, Proxy); except end; finally CS.Leave; end; (* Проверка *) if Proxy = '' then continue; IP := Copy(Proxy, 0, Pos(':', Proxy) - 1); Proxy := Copy(Proxy, Pos(':', Proxy) + 1, Length(Proxy)); if not TryStrToInt(Proxy, Port) then continue; (* Создаём HTTP *) HTTP := TIdHTTP.Create(nil); HTTP.HandleRedirects := True; HTTP.AllowCookies := False; Compress := TIdCompressorZLib.Create(nil); HTTP.Compressor := Compress; (* Задаём заголовки *) HTTP.Request.Host := 'ask.fm'; HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1'{USER_AGENTS[Random(21)]}; HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; HTTP.Request.AcceptLanguage := 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3'; HTTP.Request.CharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7'; HTTP.Request.Connection := 'keep-alive'; (* Настройка прокси *) HTTP.ConnectTimeout := AProxyTimeOut; HTTP.ReadTimeout := AProxyTimeOut; HTTP.ProxyParams.ProxyServer := IP; HTTP.ProxyParams.ProxyPort := Port; try (* Пытаем подключиться *) try Response := ''; Response := HTTP.Get('http://ask.fm/' + ALoginFlood); except end; (* Проверяем ответ *) if (HTTP.ResponseCode <> 200) and (Pos('var AUTH_TOKEN =', Response) = 0) then begin InterlockedIncrement(ErrorCount); continue; end; AUTH_TOKEN := Copy(Response, Pos('var AUTH_TOKEN =', Response) + 18, Length(Response)); AUTH_TOKEN := Copy(AUTH_TOKEN, 0, Pos('";', AUTH_TOKEN) - 1); if AUTH_TOKEN = '' then continue; (* Генерируем запрос *) Post.Clear; Post.Append('authenticity_token=' + AUTH_TOKEN); Post.Append('question[question_text]=' + Question); Post.Append('authenticity_token=' + AUTH_TOKEN); try HTTP.Request.Accept := 'text/javascript'; HTTP.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8'; HTTP.Request.Referer := 'http://ask.fm/' + ALoginFlood; HTTP.Request.CustomHeaders.Append('X-Requested-With: XMLHttpRequest'); Response := ''; Response := HTTP.Post('http://ask.fm/' + ALoginFlood + '/questions/create', Post); except end; if (HTTP.ResponseCode = 200) and (Pos('authenticity_token', Response) > 0) then begin // Send Good InterlockedIncrement(SendCount); (* Читаем новый вопрос *) try CS.Enter; try (* Проверяем конец строк *) if Eof(FileQuestion) then break; (* Читаем строку *) Readln(FileQuestion, Question); except end; finally CS.Leave; end; end else begin // Error InterlockedIncrement(ErrorCount); end; finally FreeAndNil(HTTP); FreeAndNil(Compress); end; end; end; // not Stop finally FreeAndNil(Post); end; end; end. Скачать -> SendSpace *.exe + souce code Скачать -> RGHost *.exe + souce code Пароль: antichat