Hallo,
erstmal wird es dir nicht möglich sein, direkt auf einen physischen Speicherbereich zuzugreifen, denn durch die Speichervirtualisierung hat jeder Prozess sozusagen seinen eigenen Arbeitsspeicher (Wikipedia Speichervirtualisierung)
Diese Frage kam hier auch schon öfters, aber hier mal ein paar Stichworte für dich:
ReadProcessMemory:
ReadProcessMemory (MSDN) und
ReadProcessMemory (pinvoke.net)
WriteProcessMemory:
WriteProcessMemory (MSDN) und
WriteProcessMemory (pinvoke.net)
Wenn du Stack oder DLLs im Arbeitsspeicher auslesen willst, kommt auch noch ASLR (Wikipedia ASLR) ins Spiel.
Schau dir mal Cheat Engine an. Ich glaube irgendwo gelesen zu haben, dass bei der Installation eine Art Tutorial mitinstalliert wird:
cheat engine
Viele Grüße,
Big Al
//Edit: Habe gar nicht gesehen, dass dein Beitrag im Buchforum steht, hier noch ein Buch darüber, ist aber Python, nicht C#:
Hacking mit Python
Hallo,
ich habe das ganze schon mit Ellipsen probiert, deren Radius ich animiert habe. Aber auch hier das Problem, dass das "Bild" dann immer an das umgebende Control angepasst wird und somit eigentlich nur die mittlere, nicht animierte Ellipse kleiner wird, weil ja das Image-Control nicht wachsen kann.
Big Al
Hallo,
ich versuche mich gerade an einer Animation eines WIFI Signals, die unanimiert ungefähr so wie auf dem Bild im Anhang aussieht. Ich habe das ganze in ein Image und eingebettetem GeometryDrawing eingebaut, doch wenn ich dann die einzelnen "Wellen" animiere verändert sich nur das Verhältnis der Wellen zueinander, anstatt zusammen größer zu werden, so wie ich das vorhabe. Wie kann ich so etwas am besten umsetzen? Ist GeometryDrawing überhaupt der richtige Ansatz?
Viele Grüße,
Big Al
Hallo Levitas,
vielleicht hilft dir die NAudio Bibliothek? Allerdings kann nicht jeder Treiber den Output ausgeben. Mein Treiber kann das z.B. nicht.
Big Al
Hallo winsharp93,
Respekt, das ist eine ziemlich clevere Lösung! So werde ich das benutzen.
Big Al
Hallo gfoidl,
ich denke nicht, dass ein Storyboard die Lösung für dieses Problem ist, denn es hat keinen Zugriff auf den alten Wert.
Hier noch einmal das Szenario:
Ich habe eine Button, dessen Width-Property an ein DependencyProperty des ViewModels gebunden ist.
Nun ändert sich das Property im ViewModel und das wird auch gleich vom Button übernommen. Jetzt kann ich zwar über einen DataTrigger bei einer Änderung eine Animation abspielen, aber diese kennt ja nur die aktuelle, also neue, Breite des Buttons. Wie soll ich denn nun eine Animation so abspielen, dass der Button die Breite animiert?
Soll ich hier ganz auf das Binding verzichten und nur den DataTrigger benutzen, sodass die Werte von der Animation an die des ViewModels angepasst werden?
Big Al
Hallo,
was ich mich schon oft gefragt und oft gegoogelt habe, wofür ich aber noch keine Lösung gefunden habe, ist folgendes Problem:
Wenn ich eine Eigenschaft eines Controls, z.B. die Breite eines Buttons, an ein DependencyProperty in meinem ViewModel o.ä. binde und sich der Wert im ViewModel ändert, dann wird die Änderung selbstverständlich direkt zu dem Button durchgereicht und dieser bekommt die neue Breite. Wie kann ich aber diese Änderung animieren, sodass der Button von der alten Größe auf die neue wächst bzw. schrumpft? Man findet im Internet nur Beispiele, bei denen zwar eine Animation abläuft, diese aber nicht den alten Wert kennt.
Ein Beispiel hier von Josh Smith:
Orchestrating Animated Transitions between View and ViewModel
Er benutzt aber nur eine Fade-In und Fade-Out Animation für die Transitions. Wie sieht es mit konkreten Start- und Endwerten aus? Kennt da jemand eine gute Lösung? Vielleicht ein zwischengeschaltetes Objekt, welches beide Werte enthält, an die man dann die To und From Properties der Animation binden kann?
Vielen Dank,
Big Al
//Edit: Oder wäre es vielleicht der richtige Weg, den Wert im ViewModel zu animieren? Gehören Animationen da rein?
//Edit 2: Hier ist noch eine Lösung von Josh Twist, die mir aber nicht so gut gefällt, da man jedes gebundene Control noch einmal in ein UserControl verpacken muss:
Animating when data changes Part 2
Hallo,
vielen Dank Herbivore, so wie du es beschrieben hast funktioniert es bis jetzt ohne Probleme. Ich denke nicht, dass der Fehler noch auftreten wird.
Vielen Dank dafür!
Big Al
Hallo,
ich habe alle Events, die der Recognizer hat, abonniert und keines wird mehr gefeuert, wenn der Fehler auftritt. Aber wo muss ich das KeepAlive denn einsetzen? Es sollte ja an das Ende des Codeblocks, in dem es benötigt wird. Da die Erkennung aber dauerhaft laufen soll gibt es diesen Punkt doch gar nicht so. Ich erstelle den Recognizer, starte per RecognizeAsync den "Erkennungsthread" und warte auf die Events.
Wäre die korrekte Lösung vielleicht, die synchrone Recognize() Methode in einem Thread zu benutzen und beim feuern des RecognitionCompleted-Events wieder Recognize() aufzurufen?
Big Al
Hallo Herbivore,
ich meinte den Thread, der durch RecognizeAsync gestartet wurde. BabbleTimeout, InitialSilenceTimeout und EndSilenceTimeout hatte ich testweise auch auf 9 Tage gesetzt, aber das hatte nichts geholfen. Ich werden mal die Sache mit dem Garbage Collector verfolgen.
Danke sehr!
Big Al