Autor |
Beitrag |
Sergeant
Hält's aus hier
Beiträge: 15
|
Verfasst: So 10.01.10 11:58
Hallo!
Ich kopiere manuell im Browser einen Text. Dieser ist in verschiedene DIVs wahrscheinlich verschachtelt worden. Mit STRG + V kopiere ich den Text in das Notepad von Windows. Dort wird mir der Text wieder angezeigt.
Möchte ich in meinem eigenen Programm mit Clipboard.GetText() den Text in die Konsole ausgeben oder in eine Textarea, passiert dies nicht bzw. ich glaube dass der Befehl schon ausgeführt wird problemlos. Aber es wird nichts angezeigt.
Woran liegt das? Was mache ich falsch? Kann mir jemand weiterhelfen?
Lieben Gruß
Sergeant Moderiert von Kha: Topic aus C# - Die Sprache verschoben am So 10.01.2010 um 14:10
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.01.10 12:12
Sergeant hat folgendes geschrieben : | Möchte ich in meinem eigenen Programm mit Clipboard.GetText() den Text in die Konsole ausgeben oder in eine Textarea, passiert dies nicht bzw. ich glaube dass der Befehl schon ausgeführt wird problemlos. |
Zeig doch einfach nicht nur diesen Text ab sondern sowas wie "Der Text ist: ...", dann weißt du was genau von dort kam.
Wie sieht dein Quelltext denn genau aus?
|
|
Sergeant 
Hält's aus hier
Beiträge: 15
|
Verfasst: So 10.01.10 13:09
Hallo!
Der Quelltext-Ausschnitt sieht so aus:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| SendKeys.SendWait("^(c)"); System.Threading.Thread.Sleep(500);
ActualProfileNumber++; MethodInvoker LabelUpdate = delegate { TB_Log.AppendText(ActualProfileNumber.ToString() + " Durchläufe absolviert \n"); Console.Write(Clipboard.GetText() + " Test"); }; |
Das mit dem Testen hab ich bereits probiert. Es steht dann nur " Test" da.
Der Quellcode welcher zu sehen ist, ist etwas verwirrend vielleicht. Hab durch das Ausprobieren etwas wirsch arbeiten müssen.
Sergeant
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.01.10 13:50
Dann ist die Frage in welchem Format die Daten genau vorliegen. Notepad versteht mehrere Formate, während du nur das Standardformat verwendest. (Denn du gibst ja HTML z.B. nicht an, ich vermute dann wird es auch nicht versucht abzurufen.)
Schau dir einmal die Hinweise zu ContainsText in der Doku zu GetText an bzw. die Beispiele:
msdn.microsoft.com/d...ibrary/kz40084e.aspx
|
|
Sergeant 
Hält's aus hier
Beiträge: 15
|
Verfasst: So 10.01.10 14:47
Habe jetzt folgende Funktion geschrieben:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| public string ClipBoardHTMLtoString() { string ConvertedString = null;
if (Clipboard.ContainsText(TextDataFormat.Html)) { ConvertedString = Clipboard.GetText(TextDataFormat.Html); } else { }
return ConvertedString; } |
Funktioniert leider immer noch nicht. Okay, die Ausgabe sieht so aus dass ich den Rückgabewert in einer String-Variablen gespeichert habe und dann über die Console ausgeben lasse. Aber auch da erscheint wieder nur " Test".
Irgendwelche Ideen?
Sergeant
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 10.01.10 15:09
Wenn ich manuell Text aus dem Browser kopiere und dann GetText() aufrufe, funktioniert es. Der Fehler muss in deinem restlichen Code liegen.
_________________ >λ=
|
|
Sergeant 
Hält's aus hier
Beiträge: 15
|
Verfasst: So 10.01.10 16:03
Hier mal die gesamte Klasse. Der Link zu der Website von der aus es geladen wird habe ich aus Datenschutzgründen entfernt, da es sich um private Daten von mir handelt.
Ich finde den Fehler nicht. Ist mir ein Rätsel woran es liegen kann.
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: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125:
| public partial class MainForm : Form { bool RunProfileScanner = false; int ActualProfileNumber = 0;
public MainForm() { InitializeComponent(); }
private void globalEventProvider1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.F2) { if (RunProfileScanner == false) { ControlProfileScannerThread(); } else { } }
if (e.KeyData == Keys.F8) { if (RunProfileScanner == true) { ControlProfileScannerThread(); } else { } }
if (e.KeyData == Keys.F9) { this.Close(); } }
private void BT_DBSettings_MouseClick(object sender, MouseEventArgs e) { DBSettings DBSettingsForm = new SONAR.Forms.DBSettings.DBSettings();
DBSettingsForm.ShowDialog(); }
private void DoIt(object dummy) { string ClipboardText = null;
while(RunProfileScanner == true) { ActualProfileNumber++;
SendKeys.SendWait("{F6}"); System.Threading.Thread.Sleep(200); SendKeys.SendWait("http://reject.ichbineinewebsite.com/index.php?m=info_user&id=" + ActualProfileNumber); System.Threading.Thread.Sleep(500); SendKeys.SendWait("{ENTER}"); System.Threading.Thread.Sleep(4000); Cursor.Position = new Point(600, 590); WinAPI.SendMouseLeftDown(); Cursor.Position = new Point(1080, 840); WinAPI.SendMouseLeftUp(); System.Threading.Thread.Sleep(500); SendKeys.SendWait("^(c)"); System.Threading.Thread.Sleep(500);
ClipboardText = ClipBoardHTMLtoString();
MethodInvoker LabelUpdate = delegate { TB_Log.AppendText(ActualProfileNumber.ToString() + " Durchläufe absolviert \n"); Console.Write(ClipboardText + " Test"); };
Invoke(LabelUpdate);
MethodInvoker QuestionDelegate = delegate { }; Invoke(QuestionDelegate);
} }
private void BT_Start_MouseClick(object sender, MouseEventArgs e) { ControlProfileScannerThread(); }
public void ControlProfileScannerThread() { if(RunProfileScanner == false) { RunProfileScanner = true; System.Threading.ThreadPool.QueueUserWorkItem(DoIt); } else { RunProfileScanner = false; } }
public string ClipBoardHTMLtoString() { string ConvertedString = null;
if (Clipboard.ContainsText(TextDataFormat.Html)) { ConvertedString = Clipboard.GetText(TextDataFormat.Html); } else { }
return ConvertedString; } } } |
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.01.10 16:17
Mal eine ganz andere Frage: Es sieht doch so aus als ob du nur eine Webseite aufrufst und damit etwas machst, oder?
Warum rufst du die nicht direkt in deinem Programm ab? 
|
|
Sergeant 
Hält's aus hier
Beiträge: 15
|
Verfasst: So 10.01.10 16:38
Es handelt sich immer um die gleiche Website. Das ist richtig. Aber verschiedene Unterseiten. Diese enthalten immer wieder das gleiche Muster an Informationen nur weichen die Informationen von ihrer Zusammensetzung ab.
Ich habe es mit der Maussteuerung gemacht, weil ich damit mein bisheriges Vorgehen imitieren wollte. Das man die Website auch irgendwie einlesen kann hab ich mal gelesen, aber mir fehlte dazu irgendwie der Ansatz und ich hab meinen aktuellen Weg für einfacher gehalten.
EDIT: Abgesehen davon muss man sich auf der Seite einloggen und die Website prüft ob der Browser Mozilla Firefox ist. Wie sollte ich das vorgaukeln?
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 10.01.10 17:12
Sergeant hat folgendes geschrieben : | Abgesehen davon muss man sich auf der Seite einloggen |
Alles, was ein Browser per GET und POST schafft, kann auch ein WebClient.
Sergeant hat folgendes geschrieben : | und die Website prüft ob der Browser Mozilla Firefox ist. |
Nennt sich User Agent, ein Beispiel dazu findest du direkt in der WebClient-Doku.
Wenn du diesen Weg wählen solltest, mach aber bitte ein neues Thema in der Web-Sparte auf  .
_________________ >λ=
|
|
Sergeant 
Hält's aus hier
Beiträge: 15
|
Verfasst: So 10.01.10 17:39
Ich werde jetzt den Versuch mit dem WebClient starten.  Soviele Arbeitsstunden für die Tonne. An sowas könnte ich manchmal echt verzweifeln.
Aber danke für eure Hilfe in diesem Fall.
Werde, wenn ich Hilfe brauche, einen neuen Thread aufmachen. Probiere es aber auf jedenfall erstmal alleine.
|
|