Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 20:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Screen Capture VB.NET

Discussion on Screen Capture VB.NET within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
burnbany's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 33
Received Thanks: 12
Screen Capture VB.NET

Hallo,
ich habe vor einen BOT zu schreiben. Dieser soll in minimierter Form funktionieren. Das bedeutet das Spiel ist minimiert und ich kann den PC für andere Sachen verwenden wärend der BOT im hintergrund läuft. Ich möchte auf optische ereignisse reagieren. Hierzu benötige ich allerdeings einen Stream von dem Spiel. Bedeutet, ich möchte einen screenshot von dem Spiel wärend es minimiert ist. Eine möglichkeit wäre die einbindung des Prozesses als Kindprozess(in einer art sandbox mode). Jedoch habe ich mich dafür entschießen, um auch mögliche Antihackshields zu umgehen, den Prozess nur zu überwachen.
Der folgene Teilcode existiert bis jetzt:
(an der stelle PSEUDOCODE soll nun die entsprechende funktion rein)

Code:
Public Class Porzess
    Dim Name As String
    Dim Exist As Boolean

    Sub New(ByVal b As String)
        Name = b
        If (System.Diagnostics.Process.GetProcessesByName(Name).Length <= 0) Then
            Throw New NoSuchelEmentException
        End If
    End Sub


    Public Function Screen() As Image
        Dim img As Image
        'PSEUDOCODE 
        'img = capturePIC(Name)     <-  Name = Name des prozessen (wird im konstruktor überprüft)
        Return img
    End Function
End Class

Public Class NoSuchelEmentException
    Inherits ApplicationException
    Public Sub New()
        MyBase.New("Der Prozess existiert nicht")
    End Sub
End Class
Die Funktion soll mir wie oben erwähnt, einen aktuellen screenshot von dem spiel liefern. Diesen werde ich dann auslesen um auf Ereignisse zu reagieren.

Ich hoffe mir kann jemand helfen. Ich weis das es schwer ist, aber denn noch möglich, da Windows ebenfalls eine vorschau von einem minimierten Prozess machen kann.

Gruß

****** />
PS: ich hoffe mir kann jemand helfen.
burnbany is offline  
Old 07/22/2016, 20:47   #2
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
gl hf

diesen logikfehler solltest du nicht beibehalten:
Code:
Process.GetProcessesByName(Name).Length <= 0
und ein minimiertes fenster zeichnet sich nicht neu bzw der grafik treiber aktualisiert das bild auch nicht. da musst du dir was anderes einfallen lassen

Quote:
Originally Posted by burnbany View Post
Windows ebenfalls eine vorschau von einem minimierten Prozess machen kann.
wenn du komplett auf gute performance verzichten willst, mach es so
YatoDev is offline  
Thanks
1 User
Old 07/22/2016, 21:07   #3
 
burnbany's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 33
Received Thanks: 12
Danke für den Link der ist sehr hilfreich!

Ebenfalls ergibt es Sinn was du über das Performance sagst. Danke dir!

Code:
public static Bitmap CreateFromHidden(IntPtr windowHandle)
		{
			Bitmap bmpScreen = null;
			try
			{
				Rectangle r;
				using(Graphics windowGraphic = Graphics.FromHdc(User32.GetWindowDC(windowHandle)))
				{
					r = Rectangle.Round(windowGraphic.VisibleClipBounds);
				}

				bmpScreen = new Bitmap(r.Width, r.Height);
				using(Graphics g = Graphics.FromImage(bmpScreen))
				{
					IntPtr hdc = g.GetHdc();
					try
					{
						User32.PrintWindow(windowHandle, hdc, 0);
					}
					finally
					{
						g.ReleaseHdc(hdc);
					}
				}
			}
			catch
			{
				if(bmpScreen != null)
				{
					bmpScreen.Dispose();
				}
			}

			return bmpScreen;
}
Das ist genau das was ich gesucht habe.
Gruß

Syo
burnbany is offline  
Old 07/23/2016, 09:10   #4
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
Quote:
Originally Posted by burnbany View Post
Ebenfalls ergibt es Sinn was du über das Performance sagst. Danke dir!
hatte es immer so gemacht das ich das ziel fenster aus dem sichtbaren bereich des desktops rausschiebe. ist ein bisschen tricky mit mehreren bildschirmen.

und du musst noch schauen das bei mouse clicks in das fenster nicht der fokus auf den desktop verloren geht
YatoDev is offline  
Old 07/29/2016, 20:24   #5
 
burnbany's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 33
Received Thanks: 12
Ich habe etwas Zeit gehabt und den Code umgeschrieben für vb.net. Der Code scheint zu funktionieren und ich kann über ein Handle auf den Prozess zugreifen und ein Bild davon machen. Das Problem was ich momentan habe ist das es sich um einen Safehandle zu handel scheint: Microsoft.Win32.SafeHandles.SafeProcessHandle OpenProcess(Int32, Int32, Boolean).

Meine weitere Frage wäre, kann man das irgendwie austricksen bzw umgehen und ignorieren das der Porzess gesichert ist?

Wie gesagt es handelt sich um einen Bot.
burnbany is offline  
Old 07/29/2016, 23:34   #6
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
Quote:
Originally Posted by burnbany View Post
Microsoft.Win32.SafeHandles.SafeProcessHandle OpenProcess(Int32, Int32, Boolean).

Meine weitere Frage wäre, kann man das irgendwie austricksen bzw umgehen und ignorieren das der Porzess gesichert ist?
Bist du dir sicher das du OpenProcess benutzen möchtest?

Um einen screenshot zu machen brauchst du das fenster handle.

das bekommst du durch FindWindow (Google: FindWindow msdn), Process.GetProcessesByName("name ohne .exe").FirstOrDefault().MainWindowHandle oder auch durch .

SafeHandle ist kein gesichertes Handle sondern ein Handle welches man nicht selber schließen muss (für einen screenshot unnötig).

Du solltest mit IntPtr arbeiten.

OpenProcess benutzt man zb in game hacks wo man speicher ausliest
YatoDev is offline  
Old 07/30/2016, 15:39   #7
 
burnbany's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 33
Received Thanks: 12
Das hört sich sehr nach meinem code an... Ich zeige einfach mal hier den Code


Das ist der code aus Github den ich umgeschrieben habe auf VB.NET dieser war vorher in C#

Hier wird im konstruktor getestet ob der Prozess existiert

Aufruf:

Also man deklariert einen neuen Prozess. Dann fragt man von diesem ab Prozess.screen und bekommt das bild von MyProzess.screen geliefert im Bitmap format. Diese funktion benutzt die Klasse Screenshot um das Bild vom Prozess zu machen. Das Problem ist das zb "mspaint" funktioniert aber bei GTA meckert er weil der Windowshandle irgendwie geschützt ist. Und dass muss ich irgendwie umgehen

Edit: Sorry, ich sehe grade der Code sieht grauenhaft aus. Irgendwie fehlen hier die einrückungen und einfärbungen.
burnbany is offline  
Old 07/30/2016, 22:22   #8
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
Quote:
Originally Posted by burnbany View Post
Edit: Sorry, ich sehe grade der Code sieht grauenhaft aus. Irgendwie fehlen hier die einrückungen und einfärbungen.
nimms mir nicht übel aber so werde ich den code nicht durchlesen. außerdem hasse ich die basic syntax.

liegt es vielleicht daran das gta im vollbildmodus ist? das geht nur im fenstermodus
YatoDev is offline  
Thanks
1 User
Old 07/30/2016, 23:22   #9
 
.Scy's Avatar
 
elite*gold: 15
Join Date: Jul 2010
Posts: 3,926
Received Thanks: 1,158
Quote:
Originally Posted by burnbany View Post
Das hört sich sehr nach meinem code an... Ich zeige einfach mal hier den Code


Das ist der code aus Github den ich umgeschrieben habe auf VB.NET dieser war vorher in C#

Hier wird im konstruktor getestet ob der Prozess existiert

Aufruf:

Also man deklariert einen neuen Prozess. Dann fragt man von diesem ab Prozess.screen und bekommt das bild von MyProzess.screen geliefert im Bitmap format. Diese funktion benutzt die Klasse Screenshot um das Bild vom Prozess zu machen. Das Problem ist das zb "mspaint" funktioniert aber bei GTA meckert er weil der Windowshandle irgendwie geschützt ist. Und dass muss ich irgendwie umgehen

Edit: Sorry, ich sehe grade der Code sieht grauenhaft aus. Irgendwie fehlen hier die einrückungen und einfärbungen.

es gibt auch tags für code.
Quote:
[code][ /code]
.Scy is offline  
Old 07/30/2016, 23:42   #10
 
burnbany's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 33
Received Thanks: 12
Quote:
liegt es vielleicht daran das gta im vollbildmodus ist? das geht nur im fenstermodus
Oh Ja xD
Du hast recht. danke^^

Ne war leider doch nicht die Lösung.. trotz Fenstermodus meckert er
burnbany is offline  
Reply


Similar Threads Similar Threads
Moss Screen Capture Blocker
12/15/2022 - WarRock - 4 Replies
Hy guys today i want to condivide with all this great tool that able you to use hack during ESL gaming and don't get screened by Moss.exe. You need to downalod my Loader from http://hsr.altervista.org/web/index.php and make account if you don't alredy have. TUTORIAL Choose Moss Screen Blocker from stream pannel, and click to stream, when request open moss.exe. Follow what console show. If you want stop capture screen service you need to go to moss windows and press INS key. A console...
[Release] Black Box Screen Capture
08/02/2016 - AutoIt - 3 Replies
This is me just before dying in Ark Survival Evolved: http://i66.tinypic.com/2cwjv5l.jpg And this is me after I found my dead body to get my stuff back quickly: http://i67.tinypic.com/jkdd1k.jpg I found my stuff really quickly and effortlessly, because I had this application running with the game Ark Survival Evolved.
Screen Capture
02/12/2013 - Coding Releases - 5 Replies
.
Screen Capture oder so
03/23/2008 - Technical Support - 0 Replies
Hat jemand von euch ein Programm das alle 10 Sekunden oder mehr oder weniger ein Screen macht und in einen Eingestellten Ordner speichert? Wäre nett wenn ich einen Link bekommen könnte ;) gegoogelt hab ich schon ps : Ich will kein Video :p



All times are GMT +1. The time now is 20:09.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.