Appa - SCAR Minimizeable WebClient
nielsie95
2009-05-19 18:08:36
Hey,
This is Appa, a WebClient plugin for SCAR. It has a lot of features and potential. It can help automate tasks on the internet using SCAR. For example, you can fill in forms or play flash games (minimized).
A few features:
- Browse the web
- Simulate mouse and keyboard events
- Get page source
- Adjust page source
- Get screen contents when minimized
- Block input (kind of useless, but fun :p)
- Get/Set target in page (useful for flash applets)
- Submit forms
- Cookie support
- Proxy support
- Frame support
NOTE: the mouse and keyboard simulations do not work for JAVA applets.
Here are a few examples on how to use:
//Searches through all forms for "form1"
//and sets the value of the third element
//of the form to ''
var
f: TAppaFormArray;
begin
f := appa_GetForms;
for i := 0 to High(f) do
if (f[i].Name = 'form1') then
begin
appa_FormElementAction(i, 3, appa_SetValue, '');
Break;
end;
end;
//Searches through all elements for an element
//with tag "A" (link), then it gets the href attribute
//to check if it is the proper link I'm looking for.
//If it is, it clicks the link.
var
e: TAppaElementArray;
begin
e := appa_GetElements;
for i := 0 to High(e) do
begin
if (e[i].Tag <> 'A') then
Continue;
s := LowerCase(Trim(e[i].innerText));
t := appa_ElementAction(i, appa_GetAttribute, 'href');
if ((s = q) and (q <> '')) or (s = a[4]) then
if (Pos('javascript: submitForm', t) > 0) then
begin
appa_ElementAction(i, appa_Click, '');
Break;
end;
end;
end;
//This is a general function to navigate to a page
function appa_NavigateTo(URL: string; TimeOut: Integer): Boolean;
var
t: Integer;
begin
Result := False;
if (not appa_Showing) then
Exit;
if (URL <> '') then
appa_Navigate(URL);
t := GetSystemTime + TimeOut;
while (not appa_PageLoaded) and appa_Showing and (GetSystemTime < t) do
Wait(250);
Result := appa_PageState >= 3;
end;
begin
appa_ShowForm; //Show the form
appa_NavigateTo('', 10000); //Wait until it's fully loaded
appa_NavigateTo('http://www.freerice.com/index.php', 10000); //Navigate to freerice.com
end.
As you might have guessed, these snippets are from a FreeRice script which I'll release later today. It demonstrates how to and what for Appa can be used.
If you have any further questions, please ask :)
~Nielsie95
Here's a list with available functions:
procedure SaveBitmapAsJPEG(const Bitmap, w, h, Compression: Integer; const FileName: string);
function PostHTTPFormData(const URL: string; const fieldNames, fieldValues, fileFieldNames, fileNames, fileContentType: TStringArray): string;
function appa_SetProxy(IP: string; Port: Integer; ByPass: string): Boolean;
procedure appa_ShowForm;
function appa_Showing: Boolean;
procedure appa_CloseForm;
function appa_CurrentPage: string;
function appa_PageState: Integer;
function appa_PageLoaded: Boolean;
procedure appa_Navigate(const URL: string);
function appa_GetTargets: TStringArray;
procedure appa_SetTargetHandle(const h: HWND);
procedure appa_SetTargetFromPoint(const p: TPoint);
function appa_SetTargetName(const Name: string): Boolean;
procedure appa_KeyDown(const Key: Byte);
procedure appa_KeyUp(const Key: Byte);
procedure appa_MoveMouse(const x, y:Integer);
procedure appa_HoldMouse(const x, y: Integer; const Left: Boolean);
procedure appa_ReleaseMouse(const x, y: Integer; const Left: Boolean);
function appa_GetSize: TPoint;
procedure appa_SetSize(Width, Height: Integer);
procedure appa_CopyContentToBitmap(const bIndex: Integer);
function appa_GetElements: THTMLElementArray;
function appa_GetForms: THTMLFormArray;
function appa_ElementAction(const elIndex: Integer; const act: THTMLElementAction; const Param: string): string;
function appa_FormElementAction(const FormIndex, elIndex: Integer; const act: THTMLElementAction; const Param: string): string;
procedure appa_SubmitForm(const Index: Integer);
procedure appa_ScrollTo(const x, y: Integer);
function appa_GetHTML: string;
function appa_GetCookies: string;
procedure appa_SetCookies(const Cookies: string);
procedure appa_Caption(const s: string);
function appa_GetFrameCount: Integer;
procedure appa_SetCurrentFrame(Frame: Integer; Nest: Boolean);
procedure appa_ResetFrameNest;
type
TAppaElement = record
Box: TBox;
innerText, innerHTML, outerHTML, ID, ClassName, Tag: string;
end;
TAppaElementArray = array of TAppaElement;
TAppaFormElement = record
outerHTML, ID, ClassName, Tag, Name, Value: string;
end;
TAppaFormElementArray = array of TAppaFormElement;
TAppaForm = record
Name, Action, Method: string;
Elements: TAppaFormElementArray;
end;
TAppaFormArray = array of TAppaForm;
TAppaElementAction = (appa_ScrollIntoView, appa_Click, appa_SetInnerHTML, appa_SetOuterHTML, appa_GetAttribute, appa_SetAttribute, appa_RemoveAttribute, appa_SetValue);
If you're having some annoying Just-in-time errors go to Internet Explorer and enable "Disable script debugging (other)".
Bobarkinator
2009-05-19 18:15:59
Mmmmm, sweet. I'll look at the code when I get home but from what you said, great job.
I love utilities made in SCAR :)
Amazing 2nd post ftw!
Will try this out :)
Dynamite
2009-05-19 18:22:54
Looks SIIIICKK!
Cheers Niels ;)
T|M
footballjds
2009-05-19 18:22:58
Nice!!!@
nielsie95
2009-05-19 18:25:39
From: Bobarkinator
Mmmmm, sweet. I'll look at the code when I get home but from what you said, great job.
I love utilities made in SCAR :)
It's a plugin :p
Markus
2009-05-19 18:30:50
nielsie95
2009-05-19 18:34:09
From: Markus
Deja-vu? :p
http://www.villavu.com/forum/showthread.php?t=23704
Anyways, nice work :)
Wow, it is. I didn't know he actually made it this far :p
mixster
2009-05-19 19:20:53
Disabled input, yet normal left clicking isn't working :(
Otherwise, glad there's something to further macroing on Linux since it ran (does this mean I have IE installed through Wine? eww), but if Raymond has sauce, then he wins :)
ShowerThoughts
2009-05-19 19:28:01
ZOMG!
Checking it out.
Dutchies FTW!
lordsaturn
2009-05-19 20:51:20
Niels, we want your sauce! ;)
Btw why
TAppaElementArray = array of THTMLElement;
instead of
TAppaElementArray = array of TAppaElement;
ShowerThoughts
2009-05-19 20:54:23
So it it is a kind of smart for all flash games?
all browser applets?
nielsie95
2009-05-19 20:57:31
From: lordsaturn
Niels, we want your sauce! ;)
Btw why
TAppaElementArray = array of THTMLElement;
instead of
TAppaElementArray = array of TAppaElement;
Oh you're right :) It's called THTMLElement in the plugin ;)
I might post the source later.
From: Hermen
So it it is a kind of smart for all flash games?
all browser applets?
Could be used for that yes, JAVA applets don't work though.
senrath
2009-05-19 21:02:17
Any idea why Java applets don't work?
Laur€ns
2009-05-19 21:13:41
Interesting fact: 'Appa' means 'drunk' in Dutch (NL: in straattaal dan)
Janilabo
2009-05-19 22:01:34
Wow… Awesome job, Niels!! This plugin is pretty damn cool.
Thanks. :spot:
Woah this is really sweet (: Great job man (: Much cookies A LOADS OF COOKIES FOR YOU Niels =)
~Home
ShowerThoughts
2009-05-19 22:07:13
From: Home
Woah this is really sweet (: Great job man (: Much cookies A LOADS OF COOKIES FOR YOU Niels =)
~Home
If he isn't getting fat from scripting all the time, he will get it from your loads and LOADS of cookies.
Who pays the cookies after all? ;)
Dynamite
2009-05-19 22:12:24
Wait so can Appa be used to script in?
Like smart?
Sorry if im wrong
T~M
ShowerThoughts
2009-05-19 22:14:57
Yes only for applets without java, I am actually copying Nielsie's sentence.
Sorry this mya look like double posting ? But should this be included in SRL or even fro Scar as a default plugin :O And should for this make a seperate include because i really love this stuff!
~Home
ShowerThoughts
2009-05-19 22:29:37
The plugin folder.(appa)
Then just run the script, AFAIK.
nielsie95
2009-05-20 01:38:07
From: Frt
Found a bug: Popups.
What about them?
Anyway, here's a small script that demonstrates how to work with flash applets:
program New;
const
ScrollIntoView = True;
var
Client: TBox;
Target: Integer;
TargetSize: TPoint;
procedure appa_UpdateBitmap;
var
p: TPoint;
begin
if (not appa_Showing) then
Exit;
p := appa_GetSize; //Get the size of the browser
if (p.x <> TargetSize.x) or (p.y <> TargetSize.y) then //If it has changed -> New bitmap
begin
try FreeBitmap(Target); except end;
Target := BitmapFromString(p.x, p.y, '');
TargetSize := p;
SetTargetBitmap(Target);
end;
appa_CopyContentToBitmap(Target); //Update the bitmap
//DisplayDebugImgWindow(p.x, p.y);
//SafeDrawBitmap(Target, GetDebugCanvas, 0, 0);
end;
function appa_NavigateTo(URL: string; TimeOut: Integer): Boolean;
var
t: Integer;
begin
Result := False;
if (not appa_Showing) then
Exit;
if (URL <> '') then
appa_Navigate(URL);
t := GetSystemTime + TimeOut;
while (not appa_PageLoaded) and appa_Showing and (GetSystemTime < t) do
Wait(250);
Result := appa_PageState >= 3;
end;
procedure GetClientBox; //Because you can only get the bitmap of the whole page, you need to know where the client is
var
e: TAppaElementArray;
i: Integer;
begin
if (not appa_Showing) then
Exit;
e := appa_GetElements; //Get all elements
for i := 0 to High(e) do
if (e[i].Tag = 'OBJECT') then //Search for the applet
begin
Client := e[i].Box;
if ScrollIntoView then
begin
appa_ScrollTo(0, Client.y1);
Client.y2 := Client.y2 - Client.y1;
Client.y1 := 0;
end;
Break;
end;
end;
procedure ScriptTerminate;
begin
try FreeBitmap(Target); except end;
end;
procedure ClickSquare(x, y: Integer);
begin
//No offset here, because it is sent directly to the applet
x := 285 + (100 * x);
y := 67 + (100 * y);
appa_MoveMouse(x, y);
appa_HoldMouse(x, y, True);
Wait(40);
appa_ReleaseMouse(x, y, True);
end;
procedure HandleScreen;
begin
GetClientBox;
appa_UpdateBitmap; //Update the target bitmap
while (GetColor(Client.x1 + 160, Client.y1 + 285) = clWhite) do //Relative coordinates
begin
Wait(500);
appa_UpdateBitmap; //Update the target bitmap
end;
if (GetColor(Client.x1 + 190, Client.y1 + 223) = 1776513) then //All colorchecking is relative
begin
appa_MoveMouse(180, 225); //Not relative here -- Directly sent to applet
appa_HoldMouse(180, 225, True);
Wait(40);
appa_ReleaseMouse(180, 225, True);
Wait(2000);
appa_MoveMouse(300, 355);
appa_HoldMouse(300, 355, True);
Wait(40);
appa_ReleaseMouse(300, 355, True);
Wait(2000);
appa_UpdateBitmap;
end;
if (CountColor(39423, Client.x1 + 475, Client.y1 + 358, Client.x1 + 510, Client.y1 + 380) > 0) then
begin
appa_MoveMouse(490, 375);
appa_HoldMouse(490, 375, True);
Wait(40);
appa_ReleaseMouse(490, 375, True);
Wait(2000);
appa_UpdateBitmap;
end;
while (GetColor(Client.x1 + 246, Client.y1 + 368) = 13421568) do
begin
Wait(100);
appa_UpdateBitmap;
end;
end;
procedure NextMove;
var
PlayField: array[0..2] of array[0..2] of Integer;
x, y, c: Integer;
begin
GetClientBox;
appa_UpdateBitmap; //Update the target bitmap
c := 0;
for x := 0 to 2 do
for y := 0 to 2 do
begin
PlayField[x][y] := CountColor(10092543, 240 + (100 * x) + Client.x1, 30 + (100 * y) + Client.y1, 320 + (100 * x) + Client.x1, 110 + (100 * y) + Client.y1);
//FindColors/CountColors always with offset (Client.x1)
case PlayField[x][y] of
4144: PlayField[x][y] := 2; //Computer
4160: PlayField[x][y] := 5; //You
else PlayField[x][y] := 0; //Empty
end;
if (PlayField[x][y] = 0) then
c := 1;
end;
if (c <> 1) then
Exit;
for y := 0 to 2 do
begin
c := 0;
for x := 0 to 2 do
c := c + PlayField[x][y];
if (c = 4) or (c = 10) then
for x := 0 to 2 do
if (PlayField[x][y] = 0) then
begin
ClickSquare(x, y);
Exit;
end;
end;
for x := 0 to 2 do
begin
c := 0;
for y := 0 to 2 do
c := c + PlayField[x][y];
if (c = 4) or (c = 10) then
for y := 0 to 2 do
if (PlayField[x][y] = 0) then
begin
ClickSquare(x, y);
Exit;
end;
end;
c := PlayField[0][0] + PlayField[1][1] + PlayField[2][2];
if (c = 4) or (c = 10) then
begin
if (PlayField[0][0] = 0) then
ClickSquare(0, 0)
else if (PlayField[1][1] = 0) then
ClickSquare(1, 1)
else if (PlayField[2][2] = 0) then
ClickSquare(2, 2);
Exit;
end;
c := PlayField[0][2] + PlayField[1][1] + PlayField[2][0];
if (c = 4) or (c = 10) then
begin
if (PlayField[0][2] = 0) then
ClickSquare(0, 2)
else if (PlayField[1][1] = 0) then
ClickSquare(1, 1)
else if (PlayField[2][0] = 0) then
ClickSquare(2, 0);
Exit;
end;
while True do
begin
x := Random(3);
y := Random(3);
if (PlayField[x][y] = 0) then
Break;
end;
ClickSquare(x, y);
end;
begin
appa_ShowForm;
appa_NavigateTo('', 10000);
appa_NavigateTo('http://www.novelgames.com/flashgames/game.php?id=30', 10000);
appa_SetTargetName('MacromediaFlashPlayerActiveX'); //Set target to first flash applet
repeat
HandleScreen;
NextMove;
Wait(50);
until IsFKeyDown(3) or (not appa_Showing);
end.
I understand it might be a bit complicated at first, so feel free to ask. It should play a game of TicTacToe btw :p
Smartzkid
2009-05-20 06:19:07
Wow, that's pretty neat! Delphi, I assume?
How hard would it be to use the firefox rendering engine (gecko) rather than ie?
nielsie95
2009-05-20 10:59:11
Yes, Delphi :)
I have no idea how hard it would be. I just haven't found an up-to-date interface for Delphi yet.
mastaraymond
2009-05-21 17:41:17
I tried to use the firefox engine as plugin, but it epicly failed.
mrpickle
2009-05-22 04:07:40
The scipt detects the right answer for me, but while using appa, it doesn't seem to click the answer in any way shape or form. It just keeps spamming my debug with the answer .
Smartzkid
2009-06-03 06:17:53
I smell an amazing club live bot on the way :)
nielsie95
2009-06-03 11:07:00
Guess what I'm running right now :p
l33t_h4x0r
2009-07-11 16:51:40
is the userAgent same as that of my IE installed on MY pc?
P.S[1] : I check the user agent of appa using
http://salij.org/useragent it reported as IE 7.0
Also… The application is great…
Already started botting on a text based rpg… :)
Will give out some common functions i made soon…
P.S.[2] : BUG : The appa_PageState returns 4 way before the page is even loaded…
If you are trying to test this… Do it on a page with is filled with images…
nielsie95
2009-07-12 02:58:50
From: l33t_h4x0r
is the userAgent same as that of my IE installed on MY pc?
P.S[1] : I check the user agent of appa using http://salij.org/useragent
it reported as IE 7.0
Also… The application is great…
Already started botting on a text based rpg… :)
Will give out some common functions i made soon…
P.S.[2] : BUG : The appa_PageState returns 4 way before the page is even loaded…
If you are trying to test this… Do it on a page with is filled with images…
Thanks :)
Appa basically wraps a TWebBrowser control from Delphi into a dll. So your UserAgent should be the same as your Internet Explorer. The PageState function returns the ReadyState from the browser, so there's not much I can change there.
const READYSTATE_UNINITIALIZED = 0;
Default initialisation state.
const READYSTATE_LOADING = 1;
Object is currently loading data.
const READYSTATE_LOADED = 2;
Object has been initialised.
const READYSTATE_INTERACTIVE = 3;
User can interact with the object but loading has not yet finished.
const READYSTATE_COMPLETE = 4;
All of the object's data has been loaded.
tarajunky
2009-07-12 03:02:32
Nice. I never realized that Appa was your creation, Nielsie.
rawsilk
2009-10-19 17:08:23
Notice the client dosen't switch to Appa. this means we can't use DTMs or any other wide range of functions that SCAR has built in that require a client. Plz correct me if I'm worng. How would we go about looking for DTMs and text recognition?
nielsie95
2009-10-19 17:14:25
You'll have to use appa_CopyContentToBitmap and search on the bitmap.
EDIT: See post
#25 from this thread for an example.
uncfan1119
2009-10-19 17:37:49
Anyway you can post .zip?. I don't want winrar.. :(
Bionicle
2009-10-19 19:20:21
From: uncfan1119
Anyway you can post .zip?. I don't want winrar.. :(
dont need winrar, download 7zip. better imo
rawsilk
2009-10-19 22:29:26
I think this deserves a seperate thread designed that posts allt eh functions and controls of Appa. The function list in 1st post is ok but its helpful to have a list of all controls that can be used by appa. for instance, to set a form value we would use appa_SetValue as the action but I only know that from one of the examples posted.
EDIT:
Also I tried logging into a site using Appa and it said "unable to retrieve session cookie. please relogin."
nielsie95
2009-10-20 14:37:52
I don't think there's a need for that. If you don't understand something, you can ask me :)
I'm not sure about the cookies, I believe they should work.
Infantry001
2009-10-20 15:30:19
This is pretty awesome, nielsie =) Great job, I love it!
rawsilk
2009-10-20 16:50:33
From: nielsie95
I don't think there's a need for that. If you don't understand something, you can ask me :)
I'm not sure about the cookies, I believe they should work.
Fair enough. About the cookies, I talked to my roommate in CS and apparently some login forms (especially secure sites) have an algorithm that they use to retrieve data and if it isn't matched then it wont work properly. It's designed to prevent exactly what I'm doing actually. ;)
Oh well. I working on some functions that make it possible to do DTMs and such things to make navigating these sort of sites easier. Also, does anyone have a good bitmap set for verdana font maybe size 11px? Its a bummer when it crashes cus it wont access window's fonts. "Access violation".
EDIT:
Also, I get
[Runtime Error] : Exception: Access violation at address 00781150 in module 'scar.exe'. Read of address 00000000 in line 45 in script
When I try appa_CopyContentToBitmap©; Any ideas?
nielsie95
2009-10-21 10:11:18
Did you enter a valid bitmap with proper size?
rawsilk
2009-10-21 13:51:13
Is there a way to return the bitmap of the whole page? Not just the section that Appa is viewing? You were right about bitmap too haha, forgot size params.
nielsie95
2009-10-21 17:04:51
No, sorry :(
rawsilk
2009-10-21 18:37:54
Found a bug. When using
appa_ElementAction(i, appa_GetAttribute, 'onclick');
if there is no attribute 'onclick' then it returns a Null which f***s Scar up. It doesn't return an exception. Even if I try:
a := appa_GetElements;
for i := 0 to high(a) do
begin
try writeln(appa_ElementAction(i, appa_GetAttribute, 'onclick'));
finally end;
end;
It would be better if it returned a var string and a result boolean. Boolean whether attribute exists.
YoHoJo
2009-10-21 19:24:06
Thats not APPA, this is Appa
rawsilk
2009-10-22 19:06:21
It would be nice if Appa could emulate a physical Click better. Sites still detect it as a digitally sent click where they don't detect normal ClickMouse.
XRaye
2009-10-22 19:27:54
Mouse & MMouse possible?
caused
2009-10-22 20:08:49
TWebbrowser ftw =). Good Job Nielsi!.
rawsilk
2009-10-22 20:18:44
From: XRaye
Mouse & MMouse possible?
They don't work because Appa isn't an active client in SCAR's eyes. And Mouse and MMouse would actually physically move the mouse thereby negating the purpose of Appa being a minimized resource. However, SMART does use a method that Appa can/should borrow. Notice the Red dot on SMART. It somehow mimics the mouse cursor and I think would fool these sites that detect Appa.
YoHoJo
2009-10-22 20:29:45
From: rawsilk
They don't work because Appa isn't an active client in SCAR's eyes. And Mouse and MMouse would actually physically move the mouse thereby negating the purpose of Appa being a minimized resource. However, SMART does use a method that Appa can/should borrow. Notice the Red dot on SMART. It somehow mimics the mouse cursor and I think would fool these sites that detect Appa.
What…? That makes no sense…?
SMARTs 'red dot' is just a feature because people didn't like that they couldn't see what SMART was doing so ben added a 'cursor'.
How would mouse and mmouse negate the purpose of appa being minimized?
He means a Mouse and MMouse that WORKs on APPA ONLY when its MINIMIZED, just like SMART does for runescape.
:D
Freddy1990
2009-10-25 05:19:47
From: caused
TWebbrowser ftw =).
You might want to rethink that phrase, lol, TWebbrowser is an IE control :duh:
Bionicle
2009-10-25 15:36:18
From: Freddy1990
You might want to rethink that phrase, lol, TWebbrowser is an IE control :duh:
IE! Ahh! *runs*
rawsilk
2009-10-25 16:47:59
From: YoHoJo
What…? That makes no sense…?
SMARTs 'red dot' is just a feature because people didn't like that they couldn't see what SMART was doing so ben added a 'cursor'.
How would mouse and mmouse negate the purpose of appa being minimized?
He means a Mouse and MMouse that WORKs on APPA ONLY when its MINIMIZED, just like SMART does for runescape.
:D
Normally MMouse and Mouse require that you have a Client specified. For example I could make this page a client then say Mouse (10,10,True) and it would make my cursor move to (10,10) and click. The problem I have is that the website I want to use Appa with has a receive algorithm on server side that detects programmatically sent signals as many secure sites also have. In Appa the Mouse functions just send a virtual click. However the website will notice that this is not a real click from a mouse because of the way the signal was sent and the button I'm trying to click (a submit button for login form) will not work properly. And yes SubmitForm also does not work.
I made a version of the script that does not use Appa. It just opens in broswer and ClickMouse works just fine because the way it sends the signal is acceptable to the secure site.
I tried reverse engineering Appa to modify the procedures to work like ClickMouse but I couldn't get most of the source.
However SMART could be modified, or Appa could borrow script from it, to work because it uses the same methods as ClickMouse.
EDIT: ps. The methods that would need to be used (to emulate a real click) come from win32api and win32con
EDIT: i guess theres no help. Appa just wont work with some websites :(…
Smartzkid
2009-10-27 23:15:23
How do you know that that is how they detect it; they could be checking your user agent or using some sort of javascript trickery.
Also, take a look at the SendMessage function if you want to simulate mouse clicks.
Gavril
2009-10-28 06:03:26
You can use the SendMessage function as previously stated. Thats from the Windows API, so works nicely.
I've got two questions.
- Any chance of a source release? Would be nice if others could pitch in to make this better :)
- Any chance of adding something that shows where the cursor is (as well as changing momentarily on click)?
nielsie95
2009-10-28 08:55:35
From: rawsilk
Normally MMouse and Mouse require that you have a Client specified. For example I could make this page a client then say Mouse (10,10,True) and it would make my cursor move to (10,10) and click. The problem I have is that the website I want to use Appa with has a receive algorithm on server side that detects programmatically sent signals as many secure sites also have. In Appa the Mouse functions just send a virtual click. However the website will notice that this is not a real click from a mouse because of the way the signal was sent and the button I'm trying to click (a submit button for login form) will not work properly. And yes SubmitForm also does not work.
I made a version of the script that does not use Appa. It just opens in broswer and ClickMouse works just fine because the way it sends the signal is acceptable to the secure site.
I tried reverse engineering Appa to modify the procedures to work like ClickMouse but I couldn't get most of the source.
However SMART could be modified, or Appa could borrow script from it, to work because it uses the same methods as ClickMouse.
EDIT: ps. The methods that would need to be used (to emulate a real click) come from win32api and win32con
EDIT: i guess theres no help. Appa just wont work with some websites :(…
The SubmitForm might not work, because the form might require a button click to work (javascript). ClickMouse uses the WinApi (WM_MOUSEMOVE, WM_LBUTTONDOWN, etc) to click. This will not work on JAVA applets and for Flash applets you'll have to set the correct target. You can't adjust SMART to work with any website, because SMART is made for the RS applet; you cannot use the mouse functions for any other website.
From: Gavril
You can use the SendMessage function as previously stated. Thats from the Windows API, so works nicely.
I've got two questions.
- Any chance of a source release? Would be nice if others could pitch in to make this better :)
- Any chance of adding something that shows where the cursor is (as well as changing momentarily on click)?
I don't think there's a need for the source. People don't use it that much anyway. It doesn't have much use to add a coloured dot to show the position of the mouse, as there's not really a position of the mouse. It sends fake events, but doesn't really create a fake mouse.
Jahooma
2009-10-29 22:44:59
Hmm… I got it working, but it doesn't seem to have support for the Adobe Flash Player. For example, if I go to a site that plays videos using flash (like youtube) they don't work and a message appears saying that I don't have the latest flash version. Do you know of a solution to this problem?
If it helps, I'm using Firefox version 3.5.4
nielsie95
2009-10-30 03:45:27
It uses Internet Explorer ;)
Freddy1990
2009-10-30 04:34:33
From: nielsie95
It sends fake events, but doesn't really create a fake mouse.
Hmm, any RS bot including SMART just sends fake events as well, the thing with java is that it's easier because you can manipulate the events being sent from input devices directly without much effort…
Jahooma
2009-10-30 15:16:28
From: nielsie95
It uses Internet Explorer ;)
:duh: Ah, thanks, that makes sense. Sorry about that.
Gavril
2009-10-31 13:33:28
From: nielsie95
I don't think there's a need for the source. People don't use it that much anyway. It doesn't have much use to add a coloured dot to show the position of the mouse, as there's not really a position of the mouse. It sends fake events, but doesn't really create a fake mouse.
Perhaps you're right about the source, I wouldn't know. Personally I quit RS autoing long ago, so APPA is an excellent tool for me should I want to auto anything else (currently autoing a Flash MMORPG). So perhaps the suggestion was out of greed as I wouldn't mind polishing it up to be more versatile /shrug.
As for a colored dot, I believe you're quite mistaken about its usefulness. Whenever my scripts are working as I intended, sure enough, I don't need a mouse or dot present to show me whats going on. But being that I rarely stick to one stick and usually enjoy autoing things that change to a good amount, my scripts do sometimes `freeze` so to say. Knowing the supposed position of the mouse at the time of the freeze can help in debugging what went wrong…
Quick example: Not to ramble too much more but essentially, say your character is just standing somewhere, well if the mouse/dot is far away, then something didnt trigger it to move. On the other hand, if its where you expected it to be, perhaps the click wasnt caught? Or something else you overlooked.
:)
Smartzkid
2009-11-02 22:27:09
It would be beneficial if it showed (/had the option to show) a square around each control as it is interacted with.
caused
2009-11-03 10:27:17
From: Freddy1990
You might want to rethink that phrase, lol, TWebbrowser is an IE control :duh:
I know : D. The IE engine itself is not that bad though ; D.. It's just microsofts explorer :X.
~caused
nagrom1700
2009-11-06 11:32:27
I cant get anything except the freeRice script to work using this :/ Ill just have to keep trying I guess. Are there any plans for making this more like SMART? Like actual fake mouse clicks instead of just buttons and stuff.
Gavril
2009-11-08 18:32:56
Hmm, is there any way to get the 'mouses' position in Appa? Im trying to convert the WindMouse & MMouse procedures over for Appa with a little help from WinAPI calls… but I need to be able to get the mouses position at various times.
Looking through the function/procedure list, I wasn't able to find anything that resembled what I needed, so please lemme know if Im wrong :)
nielsie95
2009-11-10 02:52:02
There is not really a mouse position as it doesn't create a fake mouse. If you really want to work with mouse positions, it's best to just track them in your script.
Floor66
2009-11-10 03:01:43
What about another seperate SCAR running a seperate script that gets commands from the script running Appa using InterSCARMessages, telling it to move the mouse!
nielsie95
2009-11-10 03:02:44
Why?
Floor66
2009-11-10 03:08:50
Oh I haven't read the thread enough I suppose :S
Nvm my reply >.<
mrpickle
2009-11-10 16:53:49
I am so in love with this :). worked nicely with your rice script, and i would love to use it in mine. THanks a load nielsie!
Dark_Sniper
2010-01-23 01:58:34
Hey I know I may be digging this thread up a bit, but this deserves it :p.
Also is there a way to make the appa window go into the system tray or something like scar? maybe just not as noticeable?
nielsie95
2010-01-23 10:16:11
program New;
function ShowWindow(hWND: HWND; nCmdShow: Integer): Boolean; external 'ShowWindow@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: LongInt): LongInt; external 'SetWindowLongA@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): LongInt; external 'GetWindowLongA@user32.dll stdcall';
function FindWindow2(lpClassName: string; lpWindowName: string): HWND; external 'FindWindowA@user32.dll stdcall';
var
h: HWND;
procedure BringAppaBack;
begin
ShowWindow(h, 0);
SetWindowLong(h, -20, 0);
ShowWindow(h, 5);
end;
procedure HideAppa(TotalHide: Boolean);
var
a: string;
begin
a := 'Appa - Temporary weird name ' + IntToStr(Random(10000));
appa_Caption(a);
h := FindWindow2('', a);
appa_Caption('Appa');
ShowWindow(h, 0);
if TotalHide then Exit;
SetWindowLong(h, -20, GetWindowLong(h, -20) or $80);
ShowWindow(h, 5);
end;
begin
appa_ShowForm;
HideAppa(False);
Wait(2000);
BringAppaBack;
end.
Here's something to hide it from the taskbar, you'll need to have API-calls enabled.
Dark_Sniper
2010-01-23 11:59:49
well I did all of that and I still get :
Line 23: [Error] (23:1): Unknown identifier 'appa_Caption' in script
is appa_caption part of appa.dll?
maybe I have a different version of appa.
nielsie95
2010-01-23 12:15:14
Could be, yes. I've updated the first post.
Additions:
procedure SaveBitmapAsJPEG(const Bitmap, w, h, Compression: Integer; const FileName: string);
function PostHTTPFormData(const URL: string; const fieldNames, fieldValues, fileFieldNames, fileNames, fileContentType: TStringArray): string;
function appa_GetCookies: string;
procedure appa_SetCookies(const Cookies: string);
procedure appa_Caption(const s: string);
The first two functions have been added to add support for DeCaptcher in SCAR.
Dark_Sniper
2010-01-23 12:19:53
wow ty so much neilsie!
keep this thread going man it is a wonderful addition to scar.
I can make bots out the botthole with this thing!
lordsaturn
2010-01-24 03:27:26
Mufasa support ? :o
btw nice additions
oh and javascript support pretty please :D:D
Simtoon
2010-01-24 06:43:07
Isnt it Simba?
Floor66
2010-01-24 07:27:07
this was made waaay before anyone knew about simba..
nielsie95
2010-01-24 07:44:59
This isn't multi-platform compatible, because it uses Internet Explorer as browser, so it's not fully compatible with Simba. I think Javascript works, lordsaturn?
lordsaturn
2010-01-24 14:03:07
Yeah you're right javascript works, thanks niels. But you could just make appa windows only for simba..
Smartzkid
2010-01-24 17:18:25
As long as simba supports plugins, it should be able to run this?
Dark_Sniper
2010-01-25 18:20:45
is it possible to open up multiple appas?
nielsie95
2010-01-26 09:57:25
Only with multiple SCARs at the moment.
Dark_Sniper
2010-01-26 16:06:05
ok, thought so.
piepolo
2010-02-12 11:20:37
is there an option for sendkeys?
Guys why this won't work. it will result like this. "hhhhhhooooooommmmmmeee",
but it should be "home"
procedure appa_TypeByte(k: Byte);
begin
appa_KeyDown(k);
appa_KeyUp(k);
end;
procedure appa_TypeSendEx(Text: string; PressEnter: Boolean);
var
S: string;
I, L: Integer;
Shift: Boolean;
begin
S:= 'ABCDEFGHIJKLMNOPQRSTUVWXZ' + '~!@#$%^&*()_+{}|:"<>?';
L := Length(Text);
for I := 1 to L do
begin
Shift := (Pos(Text[i], S) > 0);
if (Shift) then
begin
appa_KeyDown(VK_SHIFT);
while (Pos(Text[i], S) > 0) and (I <= Length(Text)) do
begin
appa_TypeByte(GetKeyCode(Text[I]));
Inc(I);
if (I > Length(Text)) then Break;
end;
end;
if (Shift) then
appa_KeyUp(VK_SHIFT);
if (I <= Length(Text)) then
begin
appa_TypeByte(GetKeyCode(Text[I]));
end;
end;
if (PressEnter) then
appa_TypeByte(GetKeyCode(Chr(13)));
end;
~Home
Hey is it possible, that we could get the source :) Because would be great if it could use Firefox Engine :) ( So it can be converted to use Simba too ) :)
~Home
Smartzkid
2010-02-22 13:21:07
The code would probably be so different that it would make more sense to start over.
Cazax
2010-02-25 11:22:44
Proxy support would be nice :)
Diddy Kong
2010-02-28 22:39:33
nielsie95
2010-03-01 08:28:19
Maybe because it uses a global keyboard hook and connects to the internet. Can't say it doesn't look suspicious, but I'm afraid there's not much I can do =\
Diddy Kong
2010-03-01 09:02:16
It's good. I can just set a file exception.
Diddy Kong
2010-03-03 23:27:26
Could you please add a procedure to hide Appa (the window), but still keep it running?
Dgby714
2010-03-03 23:30:26
From: GreenText
Could you please add a procedure to hide Appa (the window), but still keep it running?
minimize it? also there are programs on the web that will hide it in your taskbar =)
nielsie95
2010-03-04 02:50:04
Home, either do keyup or keydown, not both. They do not really simulate, they just use sendmessage.
Greentext, I believe I made such a function in Scar already (using API calls). Maybe you can find it if you search a bit, else I'll post it again later today :)
EDIT: You can find it in this thread :p (
here).
Dynamite
2010-03-20 08:58:16
How can I run a proxy with this?
So maybe every (5) times it goes to a page, it changes ip/proxy?
nielsie95
2010-03-20 10:01:06
You can't, unless you use another program to run everything through a proxy.
Dynamite
2010-03-20 18:46:12
Do you know a program that I can use?
g0tp0t
2010-04-21 17:37:28
i am going to make a runescape account generator with this :D. how would i get the text boxs and how submit nonform buttons
Frement
2010-04-21 17:39:30
From: g0tp0t
i am going to make a runescape account generator with this :D. how would i get the text boxs and how submit nonform buttons
You dont need those :) You can just use PostHTTPPageEx or what ever it is, press F1 when SCAR is open so you can see the functions.
Sir R. M8gic1an
2010-06-22 05:52:43
Stickied for the amount of use & reference this gets.
~RM
tom99
2010-07-18 11:19:59
Can this be used for ALL Scar commands ? i still need to learn to master appa
Sorry for gravedig but is there a command to change client screen? because it starts with a little screen.
ffcfoo
2010-07-30 07:23:11
Also I would like to say that does this even work anymore? I tryed to download it but it says it was a virus so I turned my Avast antivirus off and put it in to scar plugins and tryed using one of the appa functions and it didn't work it didn't even show the commands when I press ctrl + space.
i luffs yeww
2010-07-30 07:43:04
Shuttleu
2010-07-30 08:39:08
i can also say that it still works, i have been using it with the lockerz raper :p
~shut
ffcfoo
2010-07-30 09:09:51
From: Shuttleu
i can also say that it still works, i have been using it with the lockerz raper :p
~shut
What the! It wont work for me :( Also why does it say it is a virus?
i luffs yeww
2010-07-30 09:27:18
I'm not sure why it'd ever be picked up by an AV.. are you sure you're putting it in the plugins folder? SCAR 3.23?
Smartzkid
2010-07-30 13:28:25
Get rid of Avast and get real antivirus. Get clamwin.
ffcfoo
2010-07-30 19:48:25
From: Smartzkid
Get rid of Avast and get real antivirus. Get clamwin.
0_o. Avast is good…..
Smartzkid
2010-07-31 22:58:02
Realtime AV = Slow & unneeded (except for the incompetent :p)
tom992
2010-08-25 13:38:55
what is the command to resize the window ? btw im tom99 ( forgot pass and my mail block the recipient of password recovery).
nielsie95
2010-08-25 13:47:59
You'll have to manually resize or use the Windows API through API calls.
tom992
2010-08-25 15:11:17
but why does inputs not work in ssl encrypted sites ? can this be bypassed ?
nielsie95
2010-08-25 17:02:56
What do you mean?
tom992
2010-08-25 17:15:00
From: nielsie95
What do you mean?
It cant write anything in http( s ) it seems.
And also can you go backward and forward in page ?
Nvm it do work with https aswell i just did something wrong but there are certain keys you cannot such as . or @
nielsie95
2010-09-18 09:20:40
Another update!Additions:
function appa_SetProxy(IP: string; Port: Integer; ByPass: string): Boolean;
procedure appa_SetSize(Width, Height: Integer);
function appa_GetFrameCount: Integer;
procedure appa_SetCurrentFrame(Frame: Integer; Nest: Boolean);
procedure appa_ResetFrameNest;
This means support for proxies and frames! I'm not sure if proxies will work on every system, but they do on my system (it should be possible to have a different proxy for each Appa). Frames are accessible with appa_SetCurrentFrame. If you call that function, Appa will set its document to that frame (which means functions like GetElements and GetHTML will use that frame). Nested frames are supported. Don't forget to call appa_ResetFrameNest at the start of your script if you use frames.
tom99
2010-09-22 18:22:36
How do you use the proxy function do you need a proxy server somewhere else to connect to ? or do you just change it to whatever you like ? and port does it need to be open ? and also the "Bypass" thing what does it do, and what is getframecount, is it amounts of open appa?
nielsie95
2010-09-23 12:51:44
You connect to a proxy like this:
appa_SetProxy('128.227.56.81', 3124, '');
And then Appa will use that proxy to browse. The ByPass variable can be used to pass a list to Appa that shouldn't use the proxy (haven't tested this myself yet, though). By the way,
here's a nice list of proxies :)
appa_GetFrameCount returns the amount of frames found in the current page. You can change the current frame with appa_SetCurrentFrame to manipulate elements in another (i)Frame. Up until now, Appa couldn't "see" the elements inside frame elements, because they are loaded from a different source.
tom99
2010-09-27 06:44:22
This works great well done nielse i love this update!
nielsie95
2010-09-29 13:23:04
Thanks! That's good to know! :)
Gavril
2010-12-16 12:44:28
In the previous page, there was a good bit of talk/request about integrating this over to Simba (though it would be windows only I s'pose due to IE?). Has any progress been made towards this end?
TBH I've only just gotten started back into autoing n such, haven't gotten around to Simba yet but from the screenies ~ it looks freaking awesome. Essentially, I havent tried using this as a plugin for Simba yet ^^ :D
Any sign of an update that is compatible with Simba?
Gu3st...
2010-12-23 18:01:54
I am wondering about this too… And Appa for Scar has a memory leak or something.. It hogs my memory, and it increases for each appa_Navigate() call
Daniel
2010-12-23 21:28:34
Well, it'd still only work natively under Windows.
i luffs yeww
2010-12-23 21:44:58
^ For now.
Daniel
2010-12-23 21:53:52
From: i luffs yeww
^ For now.
Good luck finding/wrapping a recent Gecko/Chromium for OP then :) And also there's the compatibility between resource names, etc.. :)
Is the source available for some other person more talented than myself to pick up the project if the original author doesn't care to update it?
nielsie95
2010-12-30 06:06:47
From: Zyt3x
I am wondering about this too… And Appa for Scar has a memory leak or something.. It hogs my memory, and it increases for each appa_Navigate() call
If it is on appa_navigate(), it might be because IE caches something?
About Simba: I don't recall FPC having the TWebBrowser like Delphi has, so it's not possible to compile the source in FPC for Simba. FPC does have support for for WebKit and Gecko, but the current Appa source wont be of much help to create a version with such an engine. (so it's not a matter of updating, it's more a matter of upgrading).
Frement
2011-01-19 19:06:19
I get this in SCAR:
Type: Compiling Error
Line: 1
File:
Message: Unable to register type TAppaElement
Hey guys. Is there way that i could make this work with Links that opens in new window.. At the moment error comes. Thanks!
~Home
Shuttleu
2011-05-22 04:35:43
can i request a couple of functions for this?
appa_GetColor
appa_FindColor
~shut
Gu3st...
2011-05-22 07:40:11
From: Frement
I get this in SCAR:
Which SCAR? 3.25?
Try 3.22 :)
I will create little include with Findcolor and most basic stuff.
~Home
Shuttleu
2011-05-22 15:35:30
From: Home
I will create little include with Findcolor and most basic stuff.
~Home
go home!
~shut
Xtensity
2011-08-03 15:27:43
Not been many replies in 2 months :|. Tis a shame, great plugin.
Though, I'm curious… How exactly do I use the proxy command?
I mean, I understand the first 2 variables… but what is the ByPass:String; variable at the end of it?
I've configured my computer to have the Tor proxy setup which allows me to have multiple IP addresses overtime… so I do something like this.
Appa_SetProxy('127.0.0.1',8118,'')
Though what's the last variable for? I know the first 2 are right because I'm using them in my browser right now.
nielsie95
2011-08-03 17:43:10
The ByPass variable is to list sites/domains (separated by a semicolon) you don't want to use a proxy for (like
"*.villavu.com;www.google.com"). I'm not sure how to use it with Tor. If Tor acts like your proxy on localhost, port 8118, I guess that should work?
And thanks, Home! That should make it easier for people to write scripts :)
Xtensity
2011-08-03 23:36:04
That's the idea yes.
Though, when I have appa connect through the tor proxy I am using successfully on a number of my other browsers, and programs… each page in appa comes back as notfound/can't be displayed.. as if I didn't have any internet connection at all :(.
Why is this?
lolhahauad
2011-12-11 03:19:55
can you make this compatible with simba please?
nielsie95
2011-12-11 09:47:35
I don't think it's very easy, as TWebBrowser isn't available in Lazarus. If I'd use the Delphi version, there would probably be incompatibilities with the string parameters. So no, most likely not going to happen :(
Dgby714
2011-12-11 09:56:30
From: nielsie95
I don't think it's very easy, as TWebBrowser isn't available in Lazarus. If I'd use the Delphi version, there would probably be incompatibilities with the string parameters. So no, most likely not going to happen :(
How about releasing the sawse?
nielsie95
2011-12-11 10:08:09
There's not much you can do with it ;)
Dgby714
2011-12-12 01:35:47
From: nielsie95
There's not much you can do with it ;)
I know, I just wanted to take a peek.
Should it still be sort of compatible with scar thou?
Dgby714
2011-12-12 01:47:57
From: Main
Should it still be sort of compatible with scar thou?
Yes
Wizzup?
2011-12-12 06:11:26
You should just try loading it in Simba - it may just work.
lolhahauad
2011-12-12 21:04:14
dunno how.. really need this, the plugin doesnt show when i add it.
Dynamite
2011-12-30 23:54:41
Does anyone have an old version of scar as the new version seems to not support plugins??
-Boom
yakkyigooconroy
2011-12-31 00:01:08
From: Dynamite
Does anyone have an old version of scar as the new version seems to not support plugins??
-Boom
have you checked freddy1990.com? i know that he used to have all the old versions on there
Flight
2012-02-06 07:30:11
Niels, would it be too difficult to build something similar to run inline with Simba instead?
goodyou
2012-02-13 01:14:04
If you have any further questions, please ask
Dgby714
2012-02-13 01:15:13
From: Flight
Niels, would it be too difficult to build something similar to run inline with Simba instead?
Maybe not harder than making the original but it'd need to be made from scratch….
Flight
2012-02-15 22:19:46
From: Dgby714
Maybe not harder than making the original but it'd need to be made from scratch….
Yeah, from what I've seen the source was never released. I guess not many people are interested in the concept of a minimize-able browser like this, so it would be hard to get support for something similar to be built for Simba. :/
euphemism
2012-02-15 22:25:41
From: Flight
Yeah, from what I've seen the source was never released. I guess not many people are interested in the concept of a minimize-able browser like this, so it would be hard to get support for something similar to be built for Simba. :/
I would be interested, and I know kanah would be as well. Niels, there are three expectant customers!
I am more than interested…
Chris
2012-02-23 13:54:57
I am also very interested, I have tried to use this with Scar, but cant get it to work..
I have downloaded and installed the latest version of Scar and I have put the dll inside the includes folder, but its not in the includes manager and I have tried searching around in Scar but I cant get it to work.
Could someone help me?
Edit: NVM, I have downloaded and installed an older version of Scar and this simply had a Plugins folder :p
Will scar minimize whilst using mousemovements? or just collecting data? I could really use a minimizeable browser script.
Luke
Chris
2012-03-28 13:31:08
From: Zota
Will scar minimize whilst using mousemovements? or just collecting data? I could really use a minimizeable browser script.
Luke
Yes it can move a virtual mouse inside the browser. Also when its minimized.
I have a problem with it, I am trying to use Appa with the latest version of scar and Freddy told me to use {$L Appa.dll}, but it gives me an error:
''Unable to register function function appa_GetElements: TAppaElementArray''
Did anyone get it working with the last versions yet?
injustice
2012-03-31 09:16:51
This is amazing! Now I can get high scores in all games :D
Great work, keep it up!
LordJashin
2012-04-08 16:33:05
Alright I got it working with SCAR
proof
For anyone interested I'm going to investigate this further later.
nielsie95
2012-04-08 19:03:34
Cool, LordJashin!
Your questions have been answered in this thread ;)
LordJashin
2012-04-09 19:17:02
If anyone is still interested, Runescape loads in Appa. I bet a lot of addons/plugins for IE might work too.
http://i.imgur.com/G1OpB.png
shstiger2009
2012-04-09 19:26:00
From: LordJashin
If anyone is still interested, Runescape works in Appa. I bet a lot of addons/plugins for IE might work too.
http://i.imgur.com/G1OpB.png
I'm very interested, and I think a lot of users are or at least a handful of us.
SMART is detectable, isn't this the way to make it not?
LordJashin
2012-04-09 19:41:34
From: shstiger2009
I'm very interested, and I think a lot of users are or at least a handful of us.
SMART is detectable, isn't this the way to make it not?
Smart isn't detectable. This only works for Internet Explorer. If you press Ctrl + N in Appa you get a new window in Internet explorer.
Why am I getting this
error on youtube? - Cant get it fixed sometimes it works
Request: Tabs for APPA
Chris
2012-04-16 16:04:59
I sometimes get an error:
Type: Runtime Error, Line: 87, Message: Exception: Unknown error.
procedure appa_UpdateBitmap;
var
p: TPoint;
begin
if (not appa_Showing) then
Exit;
p := appa_GetSize;
if BitmapAssigned(Target) then
FreeBitmap(Target);
Target := BitmapFromString(p.x, p.y, '');
SetTargetBitmap(temp);
appa_CopyContentToBitmap(Target); // <-- this is line 87
SetTargetBitmap(Target);
end;
Target and temp are global variables.
Do you know more about the unknown error? Any idea how it could occur?
Thanks in advance,
Chris
shadowrecon
2012-04-18 02:43:42
The error with scar not being able to register functions was a bug in the type exporting routine in scar 3.32 its fixed in scar 3.33 beta. Download the latest beta and give it ago =p
nickdean
2013-02-25 09:44:28
Having some trouble finding an older version, seems 3.38 doesn't have the same type of plugins. Is anyone still using this? I'd like it for a soundcloud bot i created.
Zeta Matt
2013-10-02 19:04:51
I want to try it out… trying to figure out some things first :P
Zeta Matt
2013-10-02 19:06:35
Is it possible to use it with SIMBA? >.<
From: archermaths
Is it possible to use it with SIMBA? >.<
yes
Zeta Matt
2013-10-02 19:25:55
From: Officer Barbrady
yes
Could you please tell me how? I just downloaded SCAR, but I'd love to uninstall it back .-.
Zeta Matt
2013-10-02 19:28:34
Is it just dropping the includes in Simba's include file?
Chris
2013-10-03 03:58:06
From: archermaths
Is it just dropping the includes in Simba's include file?
It's a plugin, so it should be dropped in Simba's plugin folder. :)
But you'll need the one from the Appa for Simba thread:
Appa for Simba - A Minimizeable WebClientYou include it in your script using:
{$loadlib Appa_Simba.dll}
Zeta Matt
2013-10-03 21:46:59
From: Chris
It's a plugin, so it should be dropped in Simba's plugin folder. :)
But you'll need the one from the Appa for Simba thread:
Appa for Simba - A Minimizeable WebClient
You include it in your script using:
{$loadlib Appa_Simba.dll}
Oh fu****g thanks Chris! That's what I needed :D
Zef Style
2014-11-16 23:31:38
How does someone set values of non form IDs?
appa_setValue does not work with appa_ElementAction
and what about IDs/Elements that do not have a "value"…certain drop down boxes..ect
delemojo
2015-04-04 07:08:01
Puuh old thread, anyways. Is there anayway to search for BitMaps in Appa? I didnt found any? :)
From: delemojo
Puuh old thread, anyways. Is there anayway to search for BitMaps in Appa? I didnt found any? :)
There is function appa_CopyContentToBitmap();
or just drag Simba's cross on APPA window.
delemojo
2015-04-04 07:45:24
From: bg5
There is function appa_CopyContentToBitmap();
or just drag Simba's cross on APPA window.
Ah ok, I gonna take a look at it, thx :)
delemojo
2015-04-07 10:55:55
So I tryed a little bit, but I doesnt seem to work.
First I load the BMPs.
Than I use appa_CopyContentToBitmap(BMP); in a Procedure, with EVERY BMP I have.
And than I use again FindBitMap.
or is this wrong?
BTW. is there a Typekeys function in Appa too? I only found keydown / keyup. But I would need Typekeys, cause User Editable 'Strings' :)
~
—-
EDIT : I think its working now. I will write later after I tested somethign :)
Could be that appa_Click not working probably. (Im not using appa_Click, sry :D Im using HoldMouse / RealeseMouse (from appa))
delemojo
2015-04-20 14:48:14
Ok now is there any way to "FindColor" / "GetColor" in APPA Only?