Hey mensen,
Ik ben bezig met een stukje code waarmee ik op internet een tekening automatisch kan tekenen.
Dit doe ik op Sumopaint.
Ik heb een simpel form, 1 webcontrol en 1 knop. (makkelijk hea
)
Het idee is dat de webbrowser opent, en als ik op de knop druk, dat er dan wat getekend word.
Nu begin ik door gewoon een punt ergens te tekenen, fancy dingen komen later wel.
Maar hier gaat het mis. ik krijg geen foutmeldingen, maar krijg het ook niet voor elkaar om de mouseclick door te sturen naar de webcontrol, wie kan me hiermee opweg helpen.
Als ik alle voorbeelden/google doorloop, dan kom ik steeds dit soort stukjes code tegen, komen allemaal redelijk overeen.
Heb ook SendMessageA geprobeerd, dit mocht ook niet baten, de hex code's voor mousedown komen van:
http://msdn.microsoft.com/en-us/library/ms645607.aspx
Ik ben bezig met een stukje code waarmee ik op internet een tekening automatisch kan tekenen.
Dit doe ik op Sumopaint.
Ik heb een simpel form, 1 webcontrol en 1 knop. (makkelijk hea
Het idee is dat de webbrowser opent, en als ik op de knop druk, dat er dan wat getekend word.
Nu begin ik door gewoon een punt ergens te tekenen, fancy dingen komen later wel.
Maar hier gaat het mis. ik krijg geen foutmeldingen, maar krijg het ook niet voor elkaar om de mouseclick door te sturen naar de webcontrol, wie kan me hiermee opweg helpen.
Als ik alle voorbeelden/google doorloop, dan kom ik steeds dit soort stukjes code tegen, komen allemaal redelijk overeen.
Heb ook SendMessageA geprobeerd, dit mocht ook niet baten, de hex code's voor mousedown komen van:
http://msdn.microsoft.com/en-us/library/ms645607.aspx
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| public partial class Form1 : Form { [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll", SetLastError = true)] static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd); [DllImport("user32.dll", CharSet = CharSet.Auto)] static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate("http://www.sumopaint.com/app/"); } private void button1_Click(object sender, EventArgs e) { int x = hScrollBar1.Value; int y = vScrollBar1.Value; IntPtr handle = webBrowser1.Handle; StringBuilder className = new StringBuilder(100); while (className.ToString() != "Internet Explorer_Server") // your mileage may vary with this classname { handle = GetWindow(handle, 5); // 5 == child GetClassName(handle, className, className.Capacity); } IntPtr lParam = (IntPtr)((y << 16) | x); // X and Y coordinates of the click IntPtr wParam = IntPtr.Zero; // change this if you want to simulate Ctrl-Click and such const uint downCode = 0x201; // these codes are for single left clicks const uint upCode = 0x202; SendMessage(handle, downCode, wParam, lParam); // mousedown SendMessage(handle, upCode, wParam, lParam); // mouseup } |