PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB.Net]Fragen/Antworten & TuT Reuqests [Sammelthread]



Padrino
27.10.2011, 21:30
Hier könnt ihr Anfragen zu Tutorials oder einfach nur Fragen zu bestimmten Funktionen(z.b ihr wisst was ihr machen wollt, aber euch fällt kein passender Befehl dazu ein) stellen.

Ich werde dann ggf. ein Tutorial schreiben bzw. darauf Antworten

(Leute, die genug ahnung von vb.net haben können natürlich auch antworten, aber bitte keinen schwachsinn)


Historie:
Wie man einen String zwischen 2 Strings ausliest + Base64 Algorythmus (Klick! (http://free-hack.com/showpost.php?p=571097))
Wie man in einem Webbrowser einen Bestimmtes Element aussucht, und anklickt (Klick! (http://free-hack.com/showpost.php?p=572797))


MFG Padrino

Rastajan
28.10.2011, 19:08
Cooler Service ;)
Also ich wüsste gerne wie ich in einem Text bestimmte Zeilen in Chars wie z.B. " und > die verschlüsselt Wurden entschlüsseln und wieder verschlüsseln kann.
Als Beispielverschlüsselung, bzw in meinem Fall ist es Base64.

Gruß, Rastajan.

Padrino
28.10.2011, 19:11
Nimm dir eine Richtextbox, wo du deinen text rein machst.
Und dann sieht der Code wie folgt aus:


Funktion zum Entschlüsseln eines Base64-Hashs

Public Function DecryptBase64(ByVal sText As String) As String
Dim nBytes() As Byte = System.Convert.FromBase64String(sText)
Return System.Text.Encoding.Default.GetString(nBytes)
End Function


Funktion zum Verschlüsselb eines Strings in einen Base64-Hash

Public Function EncryptBase64(ByVal sText As String) As String
Dim nBytes() As Byte = System.Text.Encoding.Default.GetBytes(sText)
Return System.Convert.ToBase64String(nBytes)
End Function
Nun zum ausführen(ENTSCHLÜSSELN // Ich nehme hierzu mal einen Button)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
On Error Resume Next
For Each line In RichTextBox1.Lines
Dim hash As String = Split(Split(line, """")(1), ">")(0)
Dim plain As String = DecryptBase64(hash)
RichTextBox1.Text = RichTextBox1.Text.Replace(hash, plain)
Next
End Sub


Und zum Verschlüsseln // nehme ich mal einen zweiten Button)
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
On Error Resume Next
For Each line In RichTextBox1.Lines
Dim plain As String = Split(Split(line, """")(1), ">")(0)
Dim hash As String = EncryptBase64(plain)
RichTextBox1.Text = RichTextBox1.Text.Replace(plain, hash)
Next
End SubIn deiner Richtextbox1 wird dann der Output am ende auch ausgegeben


################################################## #
################################################## #


Merke:
Um einen String zwischen 2 bekannten strings auszulesen benutzt man die Split funktion:


Dim Text as String = split(split("<title>Padrino</title>", "<title>")(1), "</title>")(0)
In der Variable Text steht nun: Padrino
Denn wir haben unseren Text ab <title> bis </title> gesplittet, und das was dazwischen ist uns so ausgelesen.


Hoffe das ist verständlich, ansonsten einfach nochmal fragen und ich schaue, dass ich es genauer erkläre

MFG Padrino

till7
28.10.2011, 19:54
Könntest auch anstatt immer "System.Text.Encoding.Default.GetString()" zu schreiben, einfach oben schreiben: "Imports System.Text" und dann mit "Encoding.Default.GetString()".

Sparst du bisschen Code. Sonst ist es denk ich schön erklärt.
Guter Thread.

Bart2oo
29.10.2011, 07:25
Könntest du ein Tutorial zum Thema "Chat" schreiben

roccihrs
30.10.2011, 12:39
-

Sawyer
30.10.2011, 12:50
Funktioniert, lässt sich sicherlich aber auch noch anders umsetzen.


If TextBox1.Text.Length = 25 Then
TextBox2.Text = TextBox1.Text.Substring(0, 5)
TextBox3.Text = TextBox1.Text.Substring(5, 5)
TextBox4.Text = TextBox1.Text.Substring(10, 5)
TextBox5.Text = TextBox1.Text.Substring(15, 5)
TextBox6.Text = TextBox1.Text.Substring(20, 5)
End IfMfG, Sawyer

Death~
30.10.2011, 12:52
Könntest du ein Tutorial zum Thema "Chat" schreiben

http://www.youtube.com/watch?v=PvvTgDkko-w&feature=channel_video_title

Könnte ich nicht besser machen ;)


@roccihrs

Hab dir mal was kleines geschrieben:


Dim TBlist As New List(Of TextBox)
TBlist.Add(TextBox2)
TBlist.Add(TextBox3)
TBlist.Add(TextBox4)
TBlist.Add(TextBox5)
TBlist.Add(TextBox6)

Dim str As String = TextBox1.Text
For Each tb In TBlist
tb.Text = str.Substring(0, 5)
str = str.Remove(0, 5)
Next

N4dja
30.10.2011, 17:26
Könntest du zeigen wie meine eine HardwareID Klasse in VB.NET macht ?
Muss nicht großartig aufwendig sein nur wie man z.B die HardwareID aus dem Prozessor rauslesen. Wäre auch natürlich nett wenn du Zeigst wie man es aus den restlichen Komponenten wie der Grafikkarte oder des Maiboard ließt.

~Acsiii

Death~
30.10.2011, 17:58
@Acsiii
Hier ein Beispiel von politoxy: http://www.multiupload.com/5JHRKY0LJ6
MfG

.::ERROR::.
30.10.2011, 18:07
Könntest du ein Tutorial zum Thema "Chat" schreiben

Server:
Imports System.Net.Sockets
Imports System.IO
Imports System.Net

Module Module1
Private server As TcpListener
Private client As New TcpClient
Private ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8000) ' eingestellt ist port 8000. dieser muss ggf. freigegeben sein!
Private list As New List(Of Connection)

Private Structure Connection
Dim stream As NetworkStream
Dim streamw As StreamWriter
Dim streamr As StreamReader
Dim nick As String ' natürlich optional, aber für die identifikation des clients empfehlenswert.
End Structure

Sub Main()
Console.WriteLine("Der Server läuft!")
server = New TcpListener(ipendpoint)
server.Start()

While True ' wir warten auf eine neue verbindung...
client = server.AcceptTcpClient

Dim c As New Connection ' und erstellen für die neue verbindung eine neue connection...
c.stream = client.GetStream
c.streamr = New StreamReader(c.stream)
c.streamw = New StreamWriter(c.stream)

c.nick = c.streamr.ReadLine ' falls das mit dem nick nicht gewünscht, auch diese zeile entfernen.

list.Add(c) ' und fügen sie der liste der clients hinzu.
Console.WriteLine(c.nick & " has joined.")
' falls alle anderen das auch lesen sollen können, an alle clients weiterleiten.

Dim t As New Threading.Thread(AddressOf ListenToConnection)
t.Start(c)
End While
End Sub

Private Sub ListenToConnection(ByVal con As Connection)
Do
Try
Dim tmp As String = con.streamr.ReadLine ' warten, bis etwas empfangen wird...
Console.WriteLine(con.nick & ": " & tmp)
For Each c As Connection In list ' an alle clients weitersenden.
Try
c.streamw.WriteLine(con.nick & ": " & tmp)
c.streamw.Flush()
Catch
End Try
Next
Catch ' die aktuelle überwachte verbindung hat sich wohl verabschiedet.
list.Remove(con)
Console.WriteLine(con.nick & " has exit.")
Exit Do
End Try
Loop
End Sub
End Module


Client:
Imports System.Net.Sockets
Imports System.IO

Public Class Form1
Private stream As NetworkStream
Private streamw As StreamWriter
Private streamr As StreamReader
Private client As New TcpClient
Private t As New Threading.Thread(AddressOf Listen)
Private Delegate Sub DAddItem(ByVal s As String)
Private nick As String = "unknown"

Private Sub AddItem(ByVal s As String)
ListBox1.Items.Add(s)
End Sub

Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
Try
client.Connect("127.0.0.1", 8000) ' hier die ip des servers eintragen.
' da dieser beim testen wohl lokal läuft, hier die loopback-ip 127.0.0.1.
If client.Connected Then
stream = client.GetStream
streamw = New StreamWriter(stream)
streamr = New StreamReader(stream)

streamw.WriteLine(nick) ' das ist optional.
streamw.Flush()

t.Start()
Else
MessageBox.Show("Verbindung zum Server nicht möglich!")
Application.Exit()
End If
Catch ex As Exception
MessageBox.Show("Verbindung zum Server nicht möglich!")
Application.Exit()
End Try
End Sub

Private Sub Listen()
While client.Connected
Try
Me.Invoke(New DAddItem(AddressOf AddItem), streamr.ReadLine)
Catch
MessageBox.Show("Verbindung zum Server nicht möglich!")
Application.Exit()
End Try
End While
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
streamw.WriteLine(TextBox1.Text)
streamw.Flush()
TextBox1.Clear()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
nick = InputBox("Nickname: ", "Namen festlegen", "unknown")
End Sub
End Class


SampelChat: http://www.xup.in/dl,11413478/MultiServer_F-H_Sample.rar/

roccihrs
30.10.2011, 19:46
-

till7
30.10.2011, 19:50
@roccihrs (http://free-hack.com/member.php?u=55673)
Es wäre vllt eleganter, das Ganze per HttpWebRequest() zu lösen.
Vllt könntest du ein paar Informationen geben um welche Seite es handelt und was du genau auslesen möchtest.

GET/POST Request's senden und dann die Antwort abfangen ist meistens besser.

//Edit
handelt es sich um die Seite battle.net ? Was willst du da genau auslesen?

Death~
30.10.2011, 19:55
@roccihrs
Du kannst den Button auch über die ID ansprechen, die du im Quelltext findest. Ansonsten ist die Zahl, die bei Forms in Klammern steht, der Index. Wenn du ihn veränderst, sprichst du auch andere Elemente an. Doch wie Till7 schon sagt, ist es um einiges geschickter, die HTTPWebRequest-Klasse zu verwenden.

roccihrs
30.10.2011, 19:59
-

Death~
30.10.2011, 20:20
Glaub mir, dass das Anwenden von HttpWebRequest viel einfacher, schneller und stabiler ist. Machs doch gleich richtig.

roccihrs
30.10.2011, 20:30
-

inout
30.10.2011, 20:30
Du könntest durch sämtliche Elemente iterieren und die value mit dem Text "Akzeptieren und Fortfahren" vergleichen.
Das ist ziemlich unsauber, aber sollte immer funktionieren.

Aber ich stimme hier auch meinen Vorposter(n) zu, so etwas mit dem WebBrowser zu machen ist immer schlecht.

roccihrs
01.11.2011, 16:44
-

.::ERROR::.
01.11.2011, 17:13
versuch das ma mit focus zu machen

inout
01.11.2011, 18:29
Ich habe Dir doch bereits eine mögliche Lösung genannt, hast Du die ausprobiert?

Oder willst Du fertigen Code haben?

Hier bitte, ungetestet:


for each el as htmlelement in webbrowser1.document.all
if el.getattribute("classname") = "ui-button button1" then
//click
end if
next

Padrino
05.11.2011, 17:28
Und zum klicken von dem Button:



for each el as htmlelement in webbrowser1.document.all
if el.getattribute("classname") = "ui-button button1" then
el.invokemember("click")
end if
next


"classname" = Das gewünschte Attribute im Element
"ui-button button1" = Der zu suchende Inhalt des Attributes