<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>autoklick Archive - Robert Skibbe</title>
	<atom:link href="https://robbelroot.de/blog/tag/autoklick/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>alias RobbelRoot – Freelance Full Stack Developer .NET</description>
	<lastBuildDate>Sun, 03 Oct 2021 01:22:43 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://robbelroot.de/wp-content/uploads/2020/12/cropped-favicon-32x32.png</url>
	<title>autoklick Archive - Robert Skibbe</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VB NET MouseClick simulieren – mit AutoIt3</title>
		<link>https://robbelroot.de/blog/vb-net-mouseclick-simulieren-mit-autoit3/</link>
					<comments>https://robbelroot.de/blog/vb-net-mouseclick-simulieren-mit-autoit3/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Sat, 02 Oct 2021 18:14:30 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic .NET]]></category>
		<category><![CDATA[Visual Basic .NET Problemlösungen]]></category>
		<category><![CDATA[ausführen]]></category>
		<category><![CDATA[autoit]]></category>
		<category><![CDATA[autoit3]]></category>
		<category><![CDATA[autoklick]]></category>
		<category><![CDATA[autoklicker]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[automatisch]]></category>
		<category><![CDATA[automatisieren]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[klick]]></category>
		<category><![CDATA[klicken]]></category>
		<category><![CDATA[mausklick]]></category>
		<category><![CDATA[mouseclick]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[simulate]]></category>
		<category><![CDATA[simulieren]]></category>
		<category><![CDATA[steuern]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vb.net]]></category>
		<category><![CDATA[vbnet]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[visual basic]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=6393</guid>

					<description><![CDATA[<p>VB NET MouseClick simulieren Einen VB NET MouseClick simulieren zu können wollte vermutlich jeder Entwickler schon einmal. Ich würde sogar sagen, jeder Gamer sowieso, denn wer hat schon Lust auf die typische &#8222;Monkey-Work&#8220;. Zig tausend mal die gleichen Dialoge in exakter Reihenfolge zu bestätigen und sich mühselig manuell durchzuklicken. Also &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vb-net-mouseclick-simulieren-mit-autoit3/">VB NET MouseClick simulieren – mit AutoIt3</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-MouseClick-simulieren.png"><img fetchpriority="high" decoding="async" width="1200" height="675" src="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-MouseClick-simulieren.png" alt="VB.NET MouseClick simulieren" class="wp-image-6395" title="VB.NET MouseClick simulieren"/></a><figcaption>VB.NET MouseClick simulieren</figcaption></figure>






<h2 class="wp-block-heading">VB NET MouseClick simulieren</h2>



<p>Einen <strong>VB NET MouseClick simulieren</strong> zu können wollte vermutlich jeder Entwickler schon einmal.</p>



<p>Ich <strong>würde </strong>sogar <strong>sagen</strong>, <strong>jeder Gamer </strong>sowieso, denn wer hat schon Lust auf die typische &#8222;Monkey-Work&#8220;.</p>



<p><strong>Zig tausend mal </strong>die <strong>gleichen Dialoge </strong>in exakter Reihenfolge zu <strong>bestätigen </strong>und sich <strong>mühselig </strong>manuell <strong>durchzuklicken</strong>.</p>



<p>Also echt mal, da hat doch <strong>keiner Bock drauf</strong>, seufz, jedenfalls aller spätestens beim 2, 3, .. Mal.</p>



<p><strong>Natürlich </strong>treffen wir <strong>ähnliche Bedürfnisse </strong>und <strong>Probleme </strong>auch <strong>im Büroalltag </strong>an, Excel, usw. lassen lieb grüßen.</p>



<p><strong>Ein Glück</strong>, dass man (angehender) <strong>Entwickler </strong>ist, gell &#x1f609;!</p>



<h2 class="wp-block-heading">Auf YouTube ansehen –  VB NET MouseClick simulieren</h2>



<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/wlG_qTQF7fk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>



<p class="margin-after-video-block"><strong>Falls </strong>Du <strong>eher </strong>für eine <strong>visuelle Darstellung </strong>des Beitrages zu haben bist, <strong>kannst </strong>Du Dir <strong>natürlich auch </strong>das <strong>Video </strong>(vielleicht auch ergänzend zum Beitrag) <strong>anschauen</strong>.</p>



<p><strong>Bei </strong>meinen Beiträgen bringe ich gerne auch immer diverse Detail-Infos, oder andere Dinge hinein.</p>



<p><strong>Leider fehlt </strong>mir dazu oft <strong>in </strong>den <strong>Videos die Zeit</strong>, da ich denke, dass man einen <strong>Beitrag einfacher durchscrollen </strong>kann.</p>



<p>Vor allem den Beitrag sinnvoll zu gliedern ist denke ich einfacher, <strong>als durch </strong>ein <strong>Video </strong>zu <strong>zappen</strong>.</p>



<p><strong>Immerhin hat <a href="https://youtube.com" target="_blank" rel="noreferrer noopener">YouTube</a></strong> seit geraumer Zeit <strong>eine </strong>Art <strong>Kapitelübersicht </strong>hinzugefügt, Welche ich auch gern verwende.</p>



<style>
.margin-after-video-block {
  margin-top: 1em;
}
</style>



<h2 class="wp-block-heading">Die Idee zum Beitrag – VB NET MouseClick</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/09/BackgroundWorker-starten.jpg"><img decoding="async" width="640" height="360" src="https://robbelroot.de/wp-content/uploads/2021/09/BackgroundWorker-starten.jpg" alt="VB NET MouseClick - Die Idee zum Beitrag" class="wp-image-5991" title="VB NET MouseClick - Die Idee zum Beitrag"/></a><figcaption>VB NET MouseClick &#8211; Die Idee zum Beitrag</figcaption></figure>



<p><strong>Man möchte sich </strong>im Optimalfall natürlich <strong>selbst helfen </strong>können und <strong>besonders </strong>auch <strong>zukunftsorientiert</strong>.</p>



<p><strong>Gerne hätte man </strong>eine Art <strong>Hilfe </strong>in Form einer Person, der man dann einfach sagen könnte &#8222;<strong>Mach </strong>das <strong>mal</strong>..&#8220;.</p>



<p><strong>Als Programmierer können wir </strong>uns kreativen Köpfen selbstverständlich <strong>selbst </strong>unter die Arme greifen, man weiß nur nicht immer wie.</p>



<p><strong>Daher lass</strong>&#8218; <strong>mich Dir </strong>mit diesem kleinen Beitrag <strong>helfen </strong>und zeigen, wie Du einen <strong>VB NET MouseClick</strong> mit der Hilfe von <strong><a href="https://www.autoitscript.com/site/" target="_blank" rel="noreferrer noopener">AutoIt3</a></strong> durchführen kannst.</p>



<p><strong>Dadurch kannst Du </strong>dann verschiedene Tools wie <strong>diverse Klicker</strong>&#8211;<strong>Bots </strong>realisieren und Dir Deinen <strong>Alltag erleichtern</strong>.</p>



<h2 class="wp-block-heading">Nicht ohne mein AutoIt</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-ImageSearch-mit-Hilfe-von-AutoIt.png"><img loading="lazy" decoding="async" width="1200" height="675" src="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-ImageSearch-mit-Hilfe-von-AutoIt.png" alt="Mit Hilfe von AutoIt" class="wp-image-6341" title="Mit Hilfe von AutoIt"/></a><figcaption>Mit Hilfe von AutoIt</figcaption></figure>



<p>Naja <strong>etwas witzig angelehnt </strong>die Headline hier, <strong>aber tatsächlich </strong>werden wir dieses kleine Geplänkel <strong>nicht ohne AutoIt3 </strong>realisieren.</p>



<p><strong>Klar gibt </strong>es auch die <strong>Möglichkeit </strong>in VB NET <strong>einfach </strong>ich nenne es mal &#8222;<strong>manuell</strong>&#8220; einen <strong>Mausklick </strong>zu <strong>simulieren</strong>, aber ich find&#8217;s hier <strong>mit AutoIt3 </strong>definitiv <strong>angenehmer</strong>.</p>



<p><strong>Wie auch </strong>im <a href="https://robbelroot.de/blog/vb-net-imagesearch-bilder-in-spielen-desktop-und-co-suchen/" target="_blank" rel="noreferrer noopener"><strong>&#8222;ImageSearch&#8220;-Beitrag</strong></a> schon angesprochen gehen <strong>viele Entwickler kritisch mit </strong>der <strong>Speichergröße </strong>der Projekte um.</p>



<p>Das <strong>kann ich </strong>natürlich <strong>nachvollziehen</strong>, da ich <strong>selbst </strong>ein <strong>Freund des Minimalismus </strong>bin, <strong>jedoch </strong>kann man die <strong>Kirche </strong>auch <strong>im Dorf lassen</strong>.</p>



<p>Ich würde mit Sicherheit in <strong>Festplatten</strong>&#8211;<strong>Generation </strong>&#8222;<strong>Terrabyte zum Preis von damaligen 80GB</strong>&#8220; nicht anfangen für 1MB rumzunörgeln.</p>



<p><strong>Letztendlich </strong>muss man ja <strong>immer </strong>den möglichen <strong>Mehrwert in Relation zur Eigenarbeit</strong> sehen.</p>



<p><strong>Später </strong>kannst Du <strong>bei </strong>einem intelligent <strong>strukturierten Programm natürlich </strong>bedürftige <strong>Komponenten </strong>isoliert <strong>austauschen</strong>.</p>



<h2 class="wp-block-heading">Projekt in Visual Studio vorbereiten</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/10/Neues-Visual-Studio-Projekt-anlegen.png"><img loading="lazy" decoding="async" width="640" height="380" src="https://robbelroot.de/wp-content/uploads/2021/10/Neues-Visual-Studio-Projekt-anlegen.png" alt="Neues Visual Studio Projekt anlegen und vorbereiten" class="wp-image-6352" title="Neues Visual Studio Projekt anlegen und vorbereiten"/></a><figcaption>Neues Visual Studio Projekt anlegen und vorbereiten</figcaption></figure>



<p><strong>Lade </strong>Dir <strong>jetzt </strong>die <strong><a href="/downloads/tools/AutoItPackage.zip" target="_blank" rel="noreferrer noopener">benötigten Bibliotheken</a></strong> direkt hier <strong>herunter</strong>, oder suche alternativ nach <strong>anderen Quellen</strong> im Netz.</p>



<p><strong>Danach </strong>kannst Du wie üblich ein <strong>neues </strong>Windows Forms-, oder auch ein WPF-<strong>Projekt anlegen</strong>.</p>



<p><strong>Lege </strong>die &#8222;<strong>AutoItX3.Assembly.dll</strong>&#8222;-Datei nun als Verweis an, <strong>damit </strong>dein Projekt <strong>damit arbeiten </strong>kann.</p>



<p>Ganz <strong>einfach </strong>geht das zum Beispiel rechts <strong>über </strong>den <strong>Projektmappen-Explorer</strong> in Visual Studio.</p>



<p><strong>Führe </strong>dazu einfach einen <strong>rechten Mausklick </strong>auf &#8222;<strong>Verweise</strong>/<strong>Abhängigkeiten</strong>&#8220; <strong>aus </strong>und wähle die Datei aus.</p>



<p><strong>Neben </strong>dem Weg über den <strong>Projektmappen</strong>&#8211;<strong>Explorer </strong>gibt es <strong>auch </strong>noch <strong>andere Möglichkeiten</strong>.</p>



<p><strong>Kopiere </strong>anschließend <strong>alle anderen </strong>Dateien (außer die ImageSearchDLL.dll) <strong>in </strong>den <strong>Debug-Ordner</strong> deines Projekts.</p>



<p>Die <strong>oben </strong>erwähnte <strong>Datei </strong>dürfte sich <strong>aufgrund </strong>des <strong>Imports schon </strong>im Ordner befinden.</p>



<h2 class="wp-block-heading">Nun zum Code – VB NET MouseClick</h2>



<p>Sehen wir uns <strong>im nächsten Schritt </strong>den benötigten <strong>Code </strong>im Detail an.</p>



<p><strong>Wenn </strong>Du alle <strong>vorherigen Schritte abgeschlossen </strong>hast, kannst Du <strong>nun </strong>den korrekten <strong>Import </strong>durchführen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Imports AutoIt</pre>



<p><strong>Damit </strong>wird <strong>im aktuellen Scope </strong>die &#8222;AutoItX&#8220;-<strong>Klasse verfügbar</strong>, womit wir im nächsten Part den Klick realisieren können.</p>



<p><strong>Zuvor </strong>kannst Du Dir allerdings <strong>noch </strong>eine <strong>solche </strong>(oder ähnliche) <strong>GUI zurechtklicken </strong>– relativ simpel.</p>



<p><strong>Füge </strong>einfach nur <strong><a href="https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.label?view=net-5.0" target="_blank" rel="noreferrer noopener">2 Labels</a></strong>, <strong><a href="https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.textbox?view=net-5.0" target="_blank" rel="noreferrer noopener">2 Textboxen</a></strong> und einen <strong><a href="https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.button?view=net-5.0" target="_blank" rel="noreferrer noopener">Button</a> </strong>hinzu:</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-MouseClick-simulieren-Beispiel-GUI.png"><img loading="lazy" decoding="async" width="296" height="147" src="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-MouseClick-simulieren-Beispiel-GUI.png" alt="VB.NET MouseClick simulieren Beispiel-GUI" class="wp-image-6431" title="VB.NET MouseClick simulieren Beispiel-GUI"/></a><figcaption>VB.NET MouseClick simulieren Beispiel-GUI</figcaption></figure>



<p>Die <strong>2 Labels</strong> sollen <strong>einfach </strong>nur ein wenig <strong>fürs Auge </strong>klar machen, <strong>welche Inputs</strong>, <strong>wo hinein </strong>müssen.</p>



<p><strong>Bei </strong>den <strong>Textboxen </strong>handelt es sich um <strong>Eingabefelder für </strong>die <strong>Koordinaten</strong>, allerdings verzichten wir hier im Code auf Prüfungen.</p>



<p><strong>Wir werden </strong>also <strong>der Einfachheit halber nicht </strong>weiter <strong>überprüfen</strong>, <strong>ob </strong>es sich bei den Eingaben um <strong>Zahlen </strong>handelt, bzw. <strong>ob </strong>etwas <strong>eingegeben </strong>wurde.</p>



<p><strong>Nun ziehen </strong>wir die <strong>Koordinaten aus </strong>den <strong>Textboxen </strong>und wandeln Diese dann in <strong>Ganzzahlen </strong>vom Typ <strong><a href="https://docs.microsoft.com/de-de/dotnet/visual-basic/language-reference/data-types/integer-data-type" target="_blank" rel="noreferrer noopener">Integer</a></strong> um:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim x = Integer.Parse(tbX.Text)
Dim y = Integer.Parse(tbY.Text)</pre>



<p><strong>Danach </strong>können wir dann die wichtige und <strong>essentielle AutoIt3-Funktion</strong> namens &#8222;<strong>MouseClick</strong>&#8220; verwenden:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">AutoItX.MouseClick("LEFT", x, y, 1, 50)</pre>



<h3 class="wp-block-heading">MouseClick-Parameter</h3>



<p>Die <strong>möglichen Parameter </strong>möchte ich <strong>hier </strong>einmal näher erläutern:</p>



<p><strong>Weitere Informationen </strong>findest Du <strong>in </strong>der <strong><a href="https://www.autoitscript.com/autoit3/docs/functions/MouseClick.htm" target="_blank" rel="noreferrer noopener">offiziellen Dokumentation</a></strong> von AutoIt.</p>



<h4 class="wp-block-heading">button As String</h4>



<p><strong>Hier </strong>können wir den <strong>gewünschten Button als String </strong>übergeben, mögliche Werte sind: &#8222;&#8220; (leer), &#8222;LEFT&#8220;, &#8222;MIDDLE&#8220;, &#8222;RIGHT&#8220;, &#8222;PRIMARY&#8220;, &#8222;MAIN&#8220;, &#8222;SECONDARY&#8220;, &#8222;MENU&#8220;. <strong>Wenn </strong>ein <strong>leerer String </strong>übergeben wird, wird <strong>automatisch </strong>die <strong>linke Maustaste </strong>verwendet.</p>



<h4 class="wp-block-heading">x As Integer</h4>



<p>Gibt den Koordinaten-Punkt des Klicks auf der horizontalen (X) Achse an.</p>



<h4 class="wp-block-heading">y As Integer</h4>



<p>Setzt die Koordinate des auszuführenden Klicks auf der vertikalen (Y) Achse.</p>



<h4 class="wp-block-heading">numClicks As Integer</h4>



<p><strong>Legt </strong>die <strong>Anzahl der </strong>durchzuführenden <strong>Klicks </strong>an den Koordinaten <strong>fest</strong>.</p>



<h4 class="wp-block-heading">speed As Integer</h4>



<p>Gibt die Geschwindigkeit der durchzuführenden Klicks an.</p>



<h2 class="wp-block-heading">Der komplette Code – TL;DR</h2>



<p>Es ist <strong>zwar nicht viel</strong>, oder gar komplexer Code, <strong>aber hier </strong>siehst Du Ihn <strong>in einem</strong> <strong>Stück </strong>– vielleicht für die &#8222;TL;DR&#8220;-guys haha.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Imports AutoIt

Public Class Form1

    Private Sub btnExecuteClick_Click(sender As Object, e As EventArgs) Handles btnExecuteClick.Click
        Dim x = Integer.Parse(tbX.Text)
        Dim y = Integer.Parse(tbY.Text)
        AutoItX.MouseClick("LEFT", x, y, 1, 50)
    End Sub

End Class</pre>



<h2 class="wp-block-heading">Weiterführende Links</h2>



<ul class="wp-block-list"><li><strong><a href="https://robbelroot.de/blog/vb-net-imagesearch-bilder-in-spielen-desktop-und-co-suchen" target="_blank" rel="noreferrer noopener">VB NET ImageSearch – Bilder in Spielen, Desktop und Co. suchen</a></strong></li><li><strong><a href="https://robbelroot.de/blog/vb-net-web-api-waehrungskurs-service-konsum-von-grund-auf-erklaert" target="_blank" rel="noreferrer noopener">VB NET Web API &#8211; Währungskurs Service Konsum von Grund auf erklärt</a></strong></li><li><strong><a href="https://robbelroot.de/blog/vbnet-texterkennung-auf-bildern/" target="_blank" rel="noreferrer noopener">VB.NET Texterkennung auf Bildern via Google Cloud Vision API [OCR]</a></strong></li></ul>



<h2 class="wp-block-heading">Downloads</h2>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link" href="/downloads/tools/AutoItPackage.zip" target="_blank" rel="noreferrer noopener">AutoItPackage.zip</a></div>



<div class="wp-block-button"><a class="wp-block-button__link" href="/downloads/vbnet/MouseClickExample.zip" target="_blank" rel="noreferrer noopener">MouseClickExample.zip</a></div>
</div>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vb-net-mouseclick-simulieren-mit-autoit3/">VB NET MouseClick simulieren – mit AutoIt3</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/vb-net-mouseclick-simulieren-mit-autoit3/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>VB NET ImageSearch – Bilder in Spielen, Desktop und Co. suchen</title>
		<link>https://robbelroot.de/blog/vb-net-imagesearch-bilder-in-spielen-desktop-und-co-suchen/</link>
					<comments>https://robbelroot.de/blog/vb-net-imagesearch-bilder-in-spielen-desktop-und-co-suchen/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Sat, 02 Oct 2021 00:36:32 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Visual Basic .NET]]></category>
		<category><![CDATA[Visual Basic .NET Problemlösungen]]></category>
		<category><![CDATA[au3]]></category>
		<category><![CDATA[autoclick]]></category>
		<category><![CDATA[autoclicker]]></category>
		<category><![CDATA[autoit]]></category>
		<category><![CDATA[autoit3]]></category>
		<category><![CDATA[autoklick]]></category>
		<category><![CDATA[autoklicker]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[automatisieren]]></category>
		<category><![CDATA[benutzen]]></category>
		<category><![CDATA[bibliotheken]]></category>
		<category><![CDATA[bild]]></category>
		<category><![CDATA[bilder suchen]]></category>
		<category><![CDATA[bildsuche]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[einbetten]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[hilfe]]></category>
		<category><![CDATA[hinzufügen]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[imagesearch]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[nutzen]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[use]]></category>
		<category><![CDATA[vb.net]]></category>
		<category><![CDATA[vbnet]]></category>
		<category><![CDATA[verweis]]></category>
		<category><![CDATA[visual basic]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=6322</guid>

					<description><![CDATA[<p>VB.NET ImageSearch – Bilder in Spielen, Desktop und Co. suchen Eine VB NET ImageSearch, also eine Bildersuche wollte vermutlich jeder Entwickler im NET Umfeld einmal realisieren. Ach Gott wie präsent mir diese Momente noch im Gedächtnis sind, kleines Beispiel gefällig? Kein Problem! Egal ob beim Ingame-Angeln, wo man praktisch immer &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vb-net-imagesearch-bilder-in-spielen-desktop-und-co-suchen/">VB NET ImageSearch – Bilder in Spielen, Desktop und Co. suchen</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-Image-Search.png"><img loading="lazy" decoding="async" width="1200" height="675" src="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-Image-Search.png" alt="" class="wp-image-6324"/></a></figure>






<h2 class="wp-block-heading">VB.NET ImageSearch – Bilder in Spielen, Desktop und Co. suchen</h2>



<p>Eine <strong>VB NET ImageSearch</strong>, also eine <strong>Bildersuche </strong>wollte vermutlich <strong>jeder </strong>Entwickler im NET Umfeld <strong>einmal </strong>realisieren.</p>



<p>Ach Gott <strong>wie präsent </strong>mir diese Momente <strong>noch im Gedächtnis </strong>sind, kleines Beispiel gefällig? Kein Problem!</p>



<p><strong>Egal ob </strong>beim Ingame-<strong>Angeln</strong>, wo man praktisch <strong>immer </strong>wieder die exakt <strong>gleichen Aktionen </strong>durchführt, <strong>oder </strong>beim &#8222;<strong>craften</strong>&#8220; von Gegenständen..</p>



<p><strong>Auch wenn </strong>diese Beispiele <strong>eher </strong>mit dem <strong>Gaming</strong>-Sektor zu tun haben, gibt es <strong>mit Sicherheit </strong>genug <strong>Einsatzmöglichkeiten im Büro</strong>.</p>



<p><strong>So oder so </strong>hat man sicherlich<strong> nicht immer Lust</strong> <strong>und </strong>vor allem die <strong>Zeit,</strong> diese Art von &#8222;Monkey-Work&#8220;, also praktisch die Arbeit für &#8222;Blöde&#8220; zu erledigen.</p>



<h2 class="wp-block-heading">Auf YouTube ansehen –  VB NET ImageSearch</h2>



<iframe loading="lazy" width="560" height="315" src="https://www.youtube-nocookie.com/embed/ZrNPF36GA3g" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>



<p class="margin-after-video-block"><strong>Falls </strong>Du die <strong>visuelle Darstellung</strong>, bzw. Erklärung des Beitrages <strong>bevorzugst</strong>, <strong>kannst </strong>Du natürlich auch das dementsprechende <strong>Video anschauen</strong>.</p>



<p><strong>Ich habe </strong>allerdings in diesem Beitrag einige <strong>Neben-Themen</strong> <strong>eingebracht </strong>und kann mir <strong>auch </strong>hier die <strong>Zeit nehmen</strong>, ein wenig <strong>drum rum </strong>zu erklären.</p>



<p><strong>Dieser Beitrag </strong>hier ist daher etwas länger und <strong>ausführlicher </strong>als das Video – just sayin&#8216;.</p>



<style>
.margin-after-video-block {
  margin-top: 1em;
}
</style>



<h2 class="wp-block-heading">Ursprung und Idee zum Beitrag &#8211; VB NET ImageSearch</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/09/Button-–-eine-kleine-Wiederholung.jpg"><img loading="lazy" decoding="async" width="640" height="361" src="https://robbelroot.de/wp-content/uploads/2021/09/Button-–-eine-kleine-Wiederholung.jpg" alt="VB NET ImageSearch – Die Idee zum Beitrag" class="wp-image-6047" title="VB NET ImageSearch – Die Idee zum Beitrag"/></a><figcaption>VB NET ImageSearch – Die Idee zum Beitrag</figcaption></figure>



<p><strong>In solchen </strong>häufig wiederkehrenden <strong>Momenten hat </strong>man sicherlich das <strong>Bedürfnis</strong> nach Hilfe.</p>



<p>Man <strong>möchte </strong>seinem <strong>Hausroboter </strong>einfach sagen können: &#8222;Hey, <strong>mach </strong>Du <strong>das bitte </strong>mal, ich habe keine Lust&#8220;.</p>



<p><strong>Schnell wird </strong>man allerdings <strong>feststellen</strong>, <strong>dass </strong>das <strong>zu oft </strong>einfach <strong>nicht geht</strong>, bis auf in bestimmten Fällen.</p>



<p><strong>Als Entwickler </strong>haben wir natürlich <strong>glücklicherweise </strong>die <strong>Möglichkeit </strong>uns <strong>verschiedene </strong>Hilfsmittel zu <strong>bauen</strong>.</p>



<p>Ob <strong>privat</strong>, <strong>beruflich</strong>, oder für&#8217;s <strong>Spielen </strong>diverser Spiele, können wir uns viele <strong>Hilfsmittel programmieren</strong>.</p>



<p><strong>Vom </strong>einfachen <strong>Angel-Bot</strong>, Welcher eine bestimmte Abfolge immer wieder abarbeitet, <strong>bis </strong>hin <strong>zu komplexeren </strong>Bereichen.</p>



<p><strong>Darunter könnte </strong>ich mir z. B. einen &#8222;<strong>Crafter-Bot</strong>&#8220; vorstellen, <strong>Welcher nach </strong>gewissen <strong>Commands </strong>wie &#8222;Strg+Alt+&lt;XY&gt;&#8220; komplexe <strong>Gegenstände erstellen </strong>kann.</p>



<h2 class="wp-block-heading">Hilfsmittel zur Hand</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-ImageSearch-mit-Hilfe-von-AutoIt.png"><img loading="lazy" decoding="async" width="1200" height="675" src="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-ImageSearch-mit-Hilfe-von-AutoIt.png" alt="VB.NET ImageSearch mit Hilfe von AutoIt" class="wp-image-6341" title="VB.NET ImageSearch mit Hilfe von AutoIt"/></a><figcaption>VB.NET ImageSearch mit Hilfe von AutoIt</figcaption></figure>



<p>Wir <strong>arbeiten </strong>in diesem Beitrag <strong>nicht ohne </strong>weitere <strong>Hilfsmittel</strong>, warum sollte man auch darauf verzichten.</p>



<p><strong>Viele </strong>nützliche <strong>Funktionalitäten </strong>wurden <strong>bereits erfunden und </strong>erfolgreich über lange Zeit <strong>getestet</strong>.</p>



<p><strong>Für </strong>viele <strong>Entwickler spielt </strong>natürlich die <strong>Größe </strong>der jeweiligen Hilfsmittel eine <strong>Rolle</strong>, man <strong>möchte</strong> natürlich <strong>keine </strong>2GB <strong>großen Tools </strong>installieren.</p>



<p><strong>Viele sehen </strong>allerdings schon <strong>rot</strong>, <strong>wenn </strong>die einzelnen Helfer <strong>bereits </strong>an eine <strong>Größe von </strong>1-2 Megabyte rangehen.</p>



<p><strong>In </strong>einer <strong>Zeit wo </strong>man X <strong>Terrabyte </strong>große <strong>Festplatten </strong>schon zum Preis von den damaligen 80GB-Kloppern bekommt, <strong>sehe ich </strong>es allerdings <strong>halb </strong>so <strong>schlimm</strong>.</p>



<p><strong>Ich denke </strong>man muss <strong>letztendlich immer </strong>den <strong>Mehrwert gegenüber </strong>der <strong>Eigenarbeit </strong>in Relation sehen und der Mehrwert lohnt sich hier definitiv.</p>



<p><strong>Wenn </strong>man sein <strong>Programm intelligent entwickelt</strong>, hält einen nachher auch nichts davon ab, <strong>gewisse Parts </strong>isoliert <strong>auszutauschen</strong>.</p>



<p><strong>Letztendlich </strong>verwenden wir <strong>dieses Mal </strong>einige <strong>Funktionalitäten </strong>der <strong><a href="https://www.autoitscript.com/site/" target="_blank" rel="noreferrer noopener">AutoIt3</a></strong> Scriptsprache zu Nutze.</p>



<h2 class="wp-block-heading">Vorbereitungen des Visual Studio Projekts</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/10/Neues-Visual-Studio-Projekt-anlegen.png"><img loading="lazy" decoding="async" width="640" height="380" src="https://robbelroot.de/wp-content/uploads/2021/10/Neues-Visual-Studio-Projekt-anlegen.png" alt="Neues Visual Studio Projekt anlegen" class="wp-image-6352" title="Neues Visual Studio Projekt anlegen"/></a><figcaption>Neues Visual Studio Projekt anlegen</figcaption></figure>



<p><strong>Lade </strong>Dir <strong>nun </strong>am besten die <strong><a href="/downloads/tools/AutoItPackage.zip" target="_blank" rel="noreferrer noopener">von mir bereitgestellten Bibliotheken</a></strong> herunter, oder suche Diese alternativ im Netz.</p>



<p><strong>Erstelle</strong> im nächsten Schritt <strong>nun </strong>wie gewohnt ein <strong>neues </strong>Windows Forms-, oder z. B. ein neues WPF-<strong>Projekt</strong>.</p>



<p><strong>Füge </strong>die <strong>heruntergeladene </strong>&#8222;AutoItX3.Assembly.dll&#8220;-<strong>Datei </strong>nun <strong>als Verweis </strong>in dein Projekt <strong>ein </strong>– die anderen Dateien werden nicht funktionieren.</p>



<p>Einen <strong>Verweis </strong>kannst Du <strong>über </strong>den <strong>Projektmappen</strong>&#8211;<strong>Explorer </strong>rechts außen im Visual Studio <strong>hinzufügen</strong>.</p>



<p><strong>Klicke </strong>dazu <strong>einfach </strong>mit der <strong>rechten Maustaste auf </strong>&#8222;<strong>Verweise</strong>&#8220; und <strong>suche nach </strong>der <strong>Datei</strong>, wähle alternativ einen anderen Weg.</p>



<p>Du musst <strong>danach </strong>auch <strong>sämtliche anderen Dateien in </strong>das <strong>Debug</strong>&#8211;<strong>Verzeichnis </strong>deines Projekts <strong>legen</strong>.</p>



<p>Die <strong>oben Genannte </strong>ist <strong>bereits </strong>durch den vorhin geschehenen Import <strong>vorhanden</strong>.</p>



<h2 class="wp-block-heading">Ran an den Code –  VB NET ImageSearch </h2>



<p><strong>Die Funktion </strong>um die sich hier so gut wie alles drehen wird ist die <strong>&#8222;ImageSearch&#8220;-Funktion</strong> <strong>aus </strong>der &#8222;ImageSearchDLL.dll&#8220;.</p>



<p>Man <strong>beachte </strong>hier <strong>die komische Schreibweise</strong>, Welche trotz &#8222;doppelt-gemoppelt&#8220; tatsächlich richtig ist..</p>



<p><strong>Diese</strong> Funktion muss erst einmal wie folgt aus der passenden Library <strong>importiert werden</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    &lt;DllImport("ImageSearchDLL.dll")>
    Private Shared Function ImageSearch(
                                 x As Integer,
                                 y As Integer,
                                 right As Integer,
                                 bottom As Integer,
                                 imagePath As String) As IntPtr
    End Function</pre>



<p><strong>Vergiss </strong>hier auch <strong>nicht </strong>den <strong>Import des </strong>&#8222;DllImport&#8220;-<strong>Attributs</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Imports System.Runtime.InteropServices</pre>



<p>Ich denke, dass die <strong>Parameter der Funktion </strong>zwar relativ einleuchtend sind, <strong>gehe </strong>aber dennoch gerne <strong>darauf ein</strong>.</p>



<p><strong>Dabei </strong>wird Dir denke ich das <strong>folgende Bild </strong>noch ein wenig unter die Arme greifen:</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-ImageSearch-Searching-Area.png"><img loading="lazy" decoding="async" width="640" height="380" src="https://robbelroot.de/wp-content/uploads/2021/10/VB.NET-ImageSearch-Searching-Area.png" alt="VB.NET ImageSearch Searching Area" class="wp-image-6367" title="VB.NET ImageSearch Searching Area"/></a><figcaption>VB.NET ImageSearch Searching Area</figcaption></figure>



<p><strong>Je kleiner </strong>der <strong>durchsuchte Bereich </strong>ist und <strong>je weniger Bildfläche </strong>somit durchsucht werden muss, <strong>desto schneller </strong>ist die Bildsuche natürlich.</p>



<h3 class="wp-block-heading">Parameter</h3>



<h4 class="wp-block-heading">x As Integer</h4>



<p>Der X-Parameter gibt an, auf welcher <strong>Position der X-Achse</strong> die Funktion <strong>anfangen </strong>soll zu suchen.</p>



<h4 class="wp-block-heading">y As Integer</h4>



<p><strong>Als nächstes </strong>wird der Y-Parameter übergeben, um zu <strong>definieren</strong>, <strong>ab</strong> <strong>welcher Position</strong> auf der vertikalen Achse des Bildschirms gesucht werden soll. <strong>Achtung</strong>: Von <strong>oben nach unten </strong>gesehen = <strong>je größer </strong>der Wert, <strong>desto weiter unten </strong>auf dem Bildschirm.</p>



<h4 class="wp-block-heading">right As Integer</h4>



<p>Gibt an, <strong>bis </strong>zu <strong>welchem Punkt </strong>auf der <strong>X</strong>-Achse gesucht werden soll.</p>



<h4 class="wp-block-heading">bottom As Integer</h4>



<p>Legt fest, <strong>bis </strong>zu <strong>welchem vertikalen Punkt </strong>auf der Y-Achse gesucht wird.</p>



<h4 class="wp-block-heading">imagePath As String</h4>



<p><strong>Hier </strong>kannst Du den <strong>Pfad zum Bild </strong>angeben (z. B. &#8222;my_button.png&#8220;). <strong>Achtung</strong>: <strong>Wenn </strong>Du eine gewisse <strong>Toleranz </strong>für die Suche angeben möchtest, kannst Du dies <strong>mit </strong>einem <strong>voranstehenden Leerzeichen und </strong>dem <strong>einem Wert von 0-255 </strong>machen. Das sieht dann wie folgt aus: &#8222;50 my_button.png&#8220;. Wenn Du meine Wrapper-Klasse verwendest, macht Diese das für Dich.</p>



<h2 class="wp-block-heading">Ein einfacher Aufruf –  VB NET ImageSearch </h2>



<p><strong>Schaue </strong>Dir <strong>hier </strong>einen <strong>einfachen</strong>, beispielhaften <strong>Aufruf </strong>der rohen &#8222;ImageSearch&#8220;-Funktion <strong>an</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">' dont forget the import..
' Imports AutoIt

Dim x = 0
Dim y = 0
Dim right = 1920 ' full screen width, adjust..
Dim bottom = 1080 ' full screen height, adjust..
Dim tolerance = 50 ' a tolerance value between 0 and 255
Dim imagePath = "my_button.png"
Dim finalImagePath = $"{tolerance} {imagePath}"

Dim result = ImageSearch(x, y, right, bottom, finalImagePath)
Dim res = Marshal.PtrToStringAnsi(result)

Dim imageFound = res(0) = "1"
If Not imageFound Then
    MessageBox.Show("Image not found")
    Return
End If

Dim data = res.Split("|")

x = Integer.Parse(data(1))
y = Integer.Parse(data(2))

' optional, getting image dimensions
' Dim width = Integer.Parse(data(3))
' Dim height = Integer.Parse(data(4))

' do something with the coordinates, like moving to it
AutoItX.MouseMove(x, y)</pre>



<h2 class="wp-block-heading">Meine kleinen Hilfsklassen</h2>



<p><strong>Hier </strong>zeige ich Dir <strong>beiden </strong>(wirklich) <strong>kleinen Hilfsklassen</strong>, Welche die Arbeit mit der &#8222;ImageSearch&#8220;-Funktion ein wenig vereinfachen soll.</p>



<h3 class="wp-block-heading">ImageSearchResult-Klasse</h3>



<p>Die <strong>einfachere Klasse </strong>von beiden kommt dabei <strong>zuerst</strong>, einfach nur ein <strong>Zwischenspeicher für </strong>die <strong>Werte </strong>(alternativ könnte man eine <a href="https://docs.microsoft.com/de-de/dotnet/visual-basic/programming-guide/language-features/data-types/how-to-declare-a-structure" target="_blank" rel="noreferrer noopener"><strong>Structure </strong></a>verwenden).</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Public Class ImageSearchResult

    Public Property Found As Boolean

    Public Property X As Integer

    Public Property Y As Integer

    Public Property Width As Integer

    Public Property Height As Integer

    Sub New(found As Boolean)
        Me.Found = found
    End Sub

End Class</pre>



<h3 class="wp-block-heading">ImageSearch-Klasse</h3>



<p><strong>Hier </strong>wäre die <strong>Klasse</strong>, <strong>Welche </strong>Dir die <strong>Aufrufe </strong>der &#8222;ImageSearch&#8220;-Funktion ein wenig <strong>vereinfachen </strong>könnte:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Imports System.Runtime.InteropServices

Public NotInheritable Class ImageSearch

    &lt;DllImport("ImageSearchDLL.dll")>
    Private Shared Function ImageSearch(
                                 x As Integer,
                                 y As Integer,
                                 right As Integer,
                                 bottom As Integer,
                                 imagePath As String) As IntPtr
    End Function

    Public Shared Function Execute(imagePath As String, Optional tolerance As Integer = 0) As ImageSearchResult
        Dim workingArea = Screen.PrimaryScreen.WorkingArea
        Dim result = DoSearch(0, 0, workingArea.Width, workingArea.Height, imagePath, tolerance)
        Return result
    End Function

    Public Shared Function Execute(x As Integer, y As Integer, right As Integer, bottom As Integer, imagePath As String, Optional tolerance As Integer = 0) As ImageSearchResult
        Dim result = DoSearch(x, y, right, bottom, tolerance, imagePath)
        Return result
    End Function

    Public Shared Function Execute(location As Point, rightBottom As Point, imagePath As String, Optional tolerance As Integer = 0) As ImageSearchResult
        Dim result = DoSearch(location.X, location.Y, rightBottom.X, rightBottom.Y, tolerance, imagePath)
        Return result
    End Function

    Private Shared Function DoSearch(x As Integer, y As Integer, right As Integer, bottom As Integer, imagePath As String, Optional tolerance As Integer = 0) As ImageSearchResult
        imagePath = $"*{tolerance} {imagePath}"

        Dim result = ImageSearch(x, y, right, bottom, imagePath)
        Dim res = Marshal.PtrToStringAnsi(result)

        Dim imageSearchResult = New ImageSearchResult(res(0) &lt;> "0")
        If Not imageSearchResult.Found Then
            Return imageSearchResult
        End If

        Dim data = res.Split("|")

        imageSearchResult.X = Integer.Parse(data(1))
        imageSearchResult.Y = Integer.Parse(data(2))

        imageSearchResult.Width = Integer.Parse(data(3))
        imageSearchResult.Height = Integer.Parse(data(4))

        Return imageSearchResult
    End Function

End Class</pre>



<h3 class="wp-block-heading">Ein Beispiel mit den Hilfsklassen</h3>



<p><strong>Hier </strong>folgt nun das <strong>Beispiel mit </strong>Hilfe der <strong>Hilfsklassen</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim result = ImageSearch.Execute("stop_button.png")
' providing a tolerance
' ImageSearch.Execute("stop_button.png", 50)
' and more overloads..
If Not result.Found Then
    MessageBox.Show("Image not found")
    ' if inside a sub, etc..
    Return
End If
' move to the found coordinates
AutoItX.MouseMove(result.X, result.Y)</pre>



<p><strong>Besonders interessant </strong>dabei sind die <strong>verschiedenen Überladungen</strong>, <strong>Welche </strong>Dir den <strong>Aufruf </strong>vermutlich <strong>verkürzen </strong>werden.</p>



<h2 class="wp-block-heading">Weiterführende Links</h2>



<ul class="wp-block-list"><li><strong><a href="https://robbelroot.de/blog/vb-net-mouseclick-simulieren-mit-autoit3/" target="_blank" rel="noreferrer noopener">VB NET MouseClick simulieren – mit AutoIt3</a></strong></li><li><strong><a href="https://robbelroot.de/blog/vb-net-web-api-waehrungskurs-service-konsum-von-grund-auf-erklaert/" target="_blank" rel="noreferrer noopener">VB NET Web API &#8211; Währungskurs Service Konsum von Grund auf erklärt</a></strong></li></ul>



<h2 class="wp-block-heading">Downloads</h2>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link" href="/downloads/tools/AutoItPackage.zip" target="_blank" rel="noreferrer noopener">AutoIt Library Package.zip</a></div>



<div class="wp-block-button"><a class="wp-block-button__link" href="/downloads/vbnet/ImageSearchExample.zip" target="_blank" rel="noreferrer noopener">ImageSearchExample.zip</a></div>
</div>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vb-net-imagesearch-bilder-in-spielen-desktop-und-co-suchen/">VB NET ImageSearch – Bilder in Spielen, Desktop und Co. suchen</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/vb-net-imagesearch-bilder-in-spielen-desktop-und-co-suchen/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
