PHP: <?php include("include/winbinder.php"); define("SITES", "sites.txt"); define("USER_AGENT", "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9"); define("TIMER_ID", "1"); $pos = 0; $mainwin = wb_create_window(NULL, PopupWindow, "Proxy grabber by [ac1D]", WBC_CENTER, WBC_CENTER, 385, 195, 0); $label = wb_create_control ($mainwin, Label, "", 10, 145, 100, 20); $edit = wb_create_control ($mainwin, RTFEditBox, "", 120, 10, 250, 150); wb_create_control ($mainwin, PushButton, "Start", 10, 10, 80, 25, 2); if (!file_exists(SITES) && filesize(SITES) == 0) { fputs(fopen(SITES, "a+"), "http://cool-proxy.ru/\r\n"); } else { wb_create_timer($mainwin, TIMER_ID, 100); } wb_set_handler($mainwin, "process_main"); wb_main_loop(); function get($hostname) { $hostname = str_replace("http://", "", $hostname); list($host, $path) = split("/", $hostname); $path = str_replace($host, "", $hostname); if (strlen($path) == 0) { $path = "/"; } $fp = fsockopen($host, 80, $errno, $errstr, 5); if ($fp) { $req = "GET $path HTTP/1.1\r\n"; $req .= "Host: $host\r\n"; $req .= "User-Agent: ".USER_AGENT."\r\n"; $req .= "Connection: close\r\n\r\n"; $line = ""; fputs($fp, $req); while(!feof($fp)) { $line .= fgets($fp, 128); } list($headers, $html) = split("\r\n\r\n", $line); $html = str_replace($headers, "", $html); return $html; } else { return "Can't connect to $host'"; } } function start($sites_array) { global $edit; global $pos; $pos = 0; if (count($sites_array) != 0) { foreach($sites_array as $site) { $html = get($site); preg_match_all(@"|(\d+).(\d+).(\d+).(\d+):(\d+)|", $html, $out); $text = ""; foreach($out[0] as $str) { if (!eregi(" ", $str) && eregi(":", $str)) { $text .= $str."\r\n"; } } wb_set_text($edit, $text); fputs(fopen("proxy.txt", "a+"), $text); $pos = $pos + 1; } } } function process_main($window, $id) { global $label; global $edit; switch($id) { case TIMER_ID: wb_set_text($label, 'Sites count: '.count(file("sites.txt"))); break; case 2: start(file(SITES)); break; case IDCLOSE: wb_destroy_window($window); break; } } ?> Сделал потому что хотел потренероваться с интерфейсом. Знаю что есть баги и много недоделок, а про дизайн вообще молчу). P.S.: Компилировал bamcompile, а собирал WinBinder Скачать бинарик
rкакая версия WinBinder и bambalam? php 4.4.4? скопировал код - не запускается... нашёл при проверке пару недочётов, вижу это твой первый опыт с winbinder? ========================== нашёл касяк. ты неправильно создаёшь файл с адресами, если файла нет (ресурс надо закрывать) и не только::: fputs(fopen(SITES, "a+"), "http://cool-proxy.ru/\r\n"); fputs(fopen("proxy.txt", "a+"), $text); // а это ещё в цикле Оо делай лучше чтото типа PHP: $fp=fopen(SITES, 'w'); flock($fp,LOCK_EX); fputs($fp, "http://cool-proxy.ru/\r\n"); flock($fp,LOCK_UN); fclose($fp); нельзя в одном условии делать if(!file_exists(SITES) && filesize(SITES) == 0) т.к. если файла нет, то filesize выдаёт ошибку и прога вылетает. Можно хотябы так: if(!file_exists(SITES) && @filesize(SITES) == 0) Число проксей лучше обновлять не по таймеру в 100 мСек с загрузкой файла и поиска числа строк... есть более гуманные варианты кстати, не знаю как в старых версиях bam+wb, но в последних foreach работает в exe не правильно, т.е. не работает в конструкции foreach($arr $k=>$v){}, но работает в виде foreach($arr as $v){}