Помогите через ShockwaveFlash зайти в какую - нибудь игру с сайта vkontakte. На форме будет кнопка запуска, сам компонент ShockwaveFlash и поле edit для ввода в него auth_key Возможно ли вообще через ShockwaveFlash открыть игры с сайта вконтакте? Сам swf файл я скачал, но при процедуре ShockwaveFlash1.Movie := ExtractFilePath(Application.ExeName) + 'gala.swf'; отображается только стартавая картинка, а игра не работает. Если через webbrowser, то там довольно странно всё выходит, если сначала удалить игру из кэша, а потом зайти на страницу с ней, то она загружается и работает нормально, однако если игра уже есть в кэше, то ничего не происходит. Какждый раз убивать кэш и перезагружать игру довольно муторно... Тем более скоростью интернета похвастаться не могу.
Ну смотри через сниффер какие куда запросы шлются. Мож там авторизация нужна или мож флешка чтото подгружает по относительному пути а не обсолютному
Пральна говорит. OCX компотнент один фик не даст таких привелегий, при том привсем флешка грузится через специальный контактовский flash враппер. Решение : Надо копать в сторону плагина Flash для браузеров(взять хотя бы для FF), почитать как взаимодействует конкретный браузер со своими плагинами и просто написать свой подгрузчик этого плагина, а там уже смотреть какие flash vars и т.д. кидает контакт. Дело конечно далеко не для новичка.
Нашел как подгузить, тема не актуальна, но чтоб не создавать ещё одно, спрошу тут, почему виснет цикл в следующей кнопке? При первом нажатии всё работает нормально, при 2м зависает. ( Подскажите что подправить? Code: procedure TForm1.sburClick(Sender: TObject); var bmp: TBitmap; i,j,k:extended; begin razvY:=0; StatusBar1.Panels[0].Text := 'определяем высоту разведзонда'; Image2.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\IMG\RAZV.bmp'); while k < 95 do begin bmp := TBitmap.Create; bmp.Width := 60; bmp.Height := 20; BitBlt(bmp.Canvas.Handle, 0,0, 60, 20, GetDC(form1.Handle), 178,165+razvY,SRCCOPY); Image.Width := 60; Image.Height := 20; Image.Picture.Assign(bmp); Threshold(Image.Picture.Bitmap, 140, clWhite, clBlack); bmp.Free; razvY:=razvY+1; i:=CompareImageW(Image2,Image,60,20,0,0); j:=CompareImageB(Image2,Image,60,20,0,0); k:=(i+j)/2; if k > 95 then StatusBar1.Panels[0].Text := 'высота разедзонда = '+IntToStr(175+razvY)+' совпадеие '+FloatToStr(k)+ ' %'; if razvY > 350 then begin StatusBar1.Panels[0].Text := 'разведзонды не обранужены'; Break; end; Application.ProcessMessages; end; И собственно функции из этого цикла: Сравнение белых и черных пикселей на 2х картинках: Code: //функции попиксельного сравнения} function CompareImageW(TrueImg, ComprblImg:TImage;//TrueImg-это картинка-шаблон,ComprblImg-сравниваемая Width,Height,x1,y1:integer):extended; //x1,y1 - координаты начала ComprblImg. результат в "%" var x,y,k,n:integer; one,two:extended; //числитель и знаменатель. extended-это потому что нам нужны дробные числа begin Result:=0; n:=0; k:=0; for x := 0 to Width do for y := 0 to Height do if TrueImg.Canvas.Pixels[x,y]=clWhite then begin inc(n); //это наш знаменатель - сколько всего черных пикселей if ComprblImg.Canvas.Pixels[x+x1,y+y1]=clWhite then inc(k);//это числитель - кол-во совпадений end; one:=k; two:=n; //присваиваем числитель и знаменатель Result:=(one/two)*100; //и результат умножаем на 100%. end; function CompareImageB(TrueImg, ComprblImg:TImage;//TrueImg-это картинка-шаблон,ComprblImg-сравниваемая Width,Height,x1,y1:integer):extended; //x1,y1 - координаты начала ComprblImg. результат в "%" var x,y,k,n:integer; one,two:extended; //числитель и знаменатель. extended-это потому что нам нужны дробные числа begin Result:=0; n:=0; k:=0; for x := 0 to Width do for y := 0 to Height do if TrueImg.Canvas.Pixels[x,y]=clBlack then begin inc(n); //это наш знаменатель - сколько всего черных пикселей if ComprblImg.Canvas.Pixels[x+x1,y+y1]=clBlack then inc(k);//это числитель - кол-во совпадений end; one:=k; two:=n; //присваиваем числитель и знаменатель Result:=(one/two)*100; //и результат умножаем на 100%. end; Перевод изображение в чернобелое: Code: //перевод изображения в чернобелый цвет procedure Threshold(Bitmap: TBitmap; Value: Byte; Color1, Color2: TColor); type TRGB = record B, G, R: Byte; end; pRGB = ^TRGB; function ColorToRGB(Color: TColor): TRGB; begin with Result do begin R := Lo(Color); G := Lo(Color shr 8); B := Lo((Color shr 8) shr 8); end; end; var x, y: Word; C1, C2: TRGB; Dest: pRGB; begin Bitmap.PixelFormat := pf24Bit; C1 := ColorToRGB(Color1); C2 := ColorToRGB(Color2); for y := 0 to Bitmap.Height - 1 do begin Dest := Bitmap.ScanLine[y]; for x := 0 to Bitmap.Width - 1 do begin if (Dest^.r + Dest^.g + Dest^.b) / 3 > Value then Dest^ := C1 else Dest^ := C2; Inc(Dest); end; end; end;
не знаю как описать что это... Может выложу исходником и вы поглядите что не так и что вообще вызывает зависание и почему виснет только при втором нажатии?
Ошибка была вызвана " bmp.Free;" нужно освобождать в момент полного выхода из программы... Нашел более удобный способ. Другим способом ищу 15 маленьких картинок размером 30/20 на 800/900 меньше чем за пол секунды, может даже около десятой.
Слдедующий вопрос: В игре, для которой я пишу бота ввели правило на использование кликеров, сказали, что если заметят любые кликеры, забанят на неделю Вопрос следующий: Как можно через swf игру Vkontakte отличить обычную мышку от програмной? И вообще возможно ли это? Так - же вопрос, как сделать, чтоб невозможно было отличить програмную мышку от настоящей
Да никак не отличить.. но в игре скорее всего проверяют количество кликов в минуту и координаты куда делается клик. Если у тебя будет по несколько тысяч кликов в минуту и все в одну точку то скорее всего заметят , ведь человек так не смог бы
Ерунда.. С пару десятков акков на моей программе работает уже довольно продолжительное время Забанили пока только одного, но не за прогу, за мультов..