Laden...
Avatar #avatar-2065.png
Benutzerbeschreibung

Forenbeiträge von LordK Ingesamt 95 Beiträge

30.06.2009 - 16:29 Uhr
monthCalendar.SetDate(DateTime.Now.AddMonths(-3));  

Der Hinweis war gut. Besten Dank.

Erst mit dem Tagesdatum vor drei Monaten initialisieren und dann wieder mit SetDate auf DateTime.Now setzen und den aktuellen Tag wieder selektiert zu haben.

Nochmals besten Dank.

Gruß

LordK

30.06.2009 - 16:14 Uhr

Ich glaube ich habe mich ungeschickt ausgedrückt. Ich will die Anzeige des Controls so verändern, dass es nach der Initialisierung die vergangen Monate anzeigt und nicht die zukünftigen.

Bezogen auf das Bild sollte es dann so aussehen, dass nach Programmstart unten rechts der Juni steht (also immer der akutelle Monat mit aktuellem Tag), unten links der Mai, oben rechts der April und oben links dann der März.

Ich wüsste jetzt nicht, wo man dafür ein DateTime einsetzen sollte.

Gruß

LordK

30.06.2009 - 15:52 Uhr

Hallo Zusammen,

ich habe in einer Anwendung ein MonthCalender Control mit der größe 2x2 (vier Monate sind gleichzeitig sichtbar). Leider steht links oben der aktuelle Monat, rechts davon Monat + 1, unten drunter dann Monat + 2 bzw. Monat + 3.

Da mein Programm allerdings nur auf Daten der Vergangenheit zugreift, hätte ich lieber das der aktuelle Monat rechts unten ist, und dann die letzten drei Monate nach links bzw. oben angezeigt werden.

Ist sowas möglich? Ich hab keine Option dafür gefunden und das right to left Layout macht ja auch was völlig anders.

Danke im Voraus und beste Grüße

LordK

28.05.2009 - 23:34 Uhr

Wenn du nicht dieser Ansicht bist dann hätte es auch gereicht hier zu posten.

Die Idee kam mir grundsätzlich erst, nach dem ich den Post schon im anderen Forum abgesetzt hatte. Und da sich hier vermutlich mehr C# Programmierer finden als im C++ Forum, probier ich es dann doch lieber noch mal hier.

Da ich sogar SeboStone schon direkt per Mail angeschrieben habe, und bisher keine Antwort bekommen habe, hoffe ich jetzt eher auf die Hilfe von jemanden der deutlich mehr Erfahrung hat als ich.

Im anderen Forum versprech ich mir nicht mehr all zu viel Erfolg, so wie der Thread schon aussieht.

Ich hoffe ich habe nicht zu viel missmut geweckt.

Danke & Gruß

LordK

28.05.2009 - 19:47 Uhr

[EDIT=herbivore]Abgeteilt von Wiedermal BackgroundWorker[EDIT]

Hi zusammen,

ich hab mal probiert den ThinBackgroundworker von SeboStone zu verwenden. Funktioniert eigentlich auch ganz gut, nur dummerweise scheint sich der Thread nicht richtig zu beenden. Z.B. wird die OnRunWorkerCompleted Methode nicht aufgerufen. Hatte da mal eine Test Messagebox eingebaut die leider nicht angezeigt wurde.

Verwende das ganze mit dem 3.5er SP1 Framework.

Hat jemand einen Tip, was man dazu machen muss?

Danke & Gruß

LordK

26.05.2009 - 19:20 Uhr

mal abgesehen davon, dass das Control.Invoke fehlt. 😃

Das kam später noch 😉
Das war nur der erste Test ob es überhaupt funktioniert.

Aber ich denke mal ich werde jetzt die Variante von herbivore probieren. Die mit der Statusklasse gefällt mir nicht so ganz und die mit dem progressreport-delegate kann ich mir im Moment nicht vorstellen, wie das aussehen müsste.

Danke für eure Hilfe

Gruß

LordK

26.05.2009 - 18:31 Uhr

Ich kann zwar im Moment nicht abschätzen, wie elegant / sicher meine Lösung jetzt ist, aber ich hab einfach den Eventhandler in Klasse B einfach als static definiert und das WinForm einfach direkt an dem statischen EventHandler registriert:



KlasseB:

internal static event EventHandler<TextEventArgs> MyEvent;

protected virtual void OnMyEvent(TextEventArgs e)
{
    EventHandler<TextEventArgs> myEvent = MyEvent;
    if (myEvent != null)
    {
        myEvent(this, e);
    }
}

WinForm:

KlasseB.MyEvent += new EventHandler<TextEventArgs>(myObject_MyEvent);

private void myObject_MyEvent(Object objSender, TextEventArgs e)
{
     MessageBox.Show(e.Text);
}


TextEventArgs:

public class TextEventArgs : System.EventArgs
{
    private readonly string text;
    public TextEventArgs(string text): base()
    {
        this.text = text;
    }
    public string Text
    { get { return this.text; } }
}


Ob es gut/schön ist, ist jetzt eine Sache, aber es funktioniert zumindestens. 😁

Gruß

LordK

26.05.2009 - 18:01 Uhr

schmeiss ein event. das form kann sich dann daran registrieren, bevor du den backgroundworker anschmeisst und dann kannst du in diesem die progressbar aktualisieren.

Würde das nicht aber bedeuten, dass die WinForm Klasse schon eine Referenz auf Klasse B haben müsste? Bisher wird eine Instanz der Klasse B ja erst erzeugt, wenn die execute Methode in Klasse A aufgerufen wird.

Danke & Gruß

26.05.2009 - 17:50 Uhr

Hallo Zusammen,

wie ich durch die Suche erfahren habe, ist dies hier schon ein ziemlich langes und immer wieder kehrendes Thema. Doch beim sichten der vorhanden Topics hab ich mein Problem irgendwie nicht ganz wieder gefunden.

Ich habe ein Form mit einer Statusleiste und einem Backgroundworker. Auf Knopfdruck wird der Backgroundworker gestartet, der eine Methode in einer anderen Klasse aufruft, in der wiederrum eine Methode in einer weiteren Klasse aufruft. In der letzten aufgerufenen Methode wird eine Schleife durchlaufen. Innerhalb der Schleife soll nun die Statusbar im WinForm aktualisiert werden. (Die angehängt Grafik verdeutlicht das hoffentlich noch mal etwas...).

Das man per Invoke die Elemente der GUI aktualisieren kann habe in inzwischen schon gelesen, doch meistens war dann die Verarbeitung noch in der WinForm Klasse, so das man direkt den delegaten bzw. das Control ansprechen konnte.

Wie kann ich nun aus den anderen Klassen heraus die Statusleiste updaten?
Muss ich tatsächlich eine Referenz des WinForms durch alle Klassen durchschleifen oder gibt es da eine elegantere Methode?

Vielen Dank im Voraus.

Beste Grüße

LordK

31.03.2009 - 12:41 Uhr

Hallo Zusammen,

ch habe eine NotifyIcon Anwendung nach der Vorlage von Herbivore geschrieben. Funktioniert soweit alles auch ganz gut, allerdings möchte ich jetzt noch die Möglichkeit einbauen, dass Programm von außen über WindowMessages zu steuern. Nach einiger Recherche fand ich heraus, dass das durch überschreiben der WndProc() Mehtode möglich ist. Doch da ich ja kein Form habe, hab ich auch keine WndProc Methode die ich überschreiben kann...

Hintergrund des ganzen ist, dass ich über USB ein IR-Empfänger am Rechner habe, der die Signale über eine Applikation namens Girder verarbeitet. Dieses Tool wiederrum kann z.B. über SendMessage Nachrichten an andere Applikationen schicken. Ziel des ganzen ist, dass ich ein Knopf auf der Fernbedienung drücke und Girder dann ein Command an meine Application weiter schickt, die dann wiederrum irgendeine Methode aufruft.

Gibt es eine Möglichkeit WindowMessages zu verarbeiten ohne das man ein Window hat?

Danke & Gruß

LordK

21.04.2006 - 13:03 Uhr

kannste mal ein Bild davon poten? 😉

Bin jetzt schon neugierig, wie das aussieht 😁

14.04.2006 - 03:52 Uhr

Original von JayeL
Selbige Grafik möchte ich gern als Bild bspw. ind Powerpoint exportieeren (oder halt ins Cipboard). Ein Screenshot kommt nciht in Frage, weil ich das Clipboard (wo sich ein Scrennshot hinschreibt) noch anderwertig brauche

Hä? Das versteh ich jetzt nicht, du willst nach Powerpoint oder ins Clipboard exportieren, kannst aber kein Screenshot verwenden, weil der sich ins Clipboard schreibt, welches du noch anderweitig brauchst?

So wie ich den Code verstehe, da bei dem Link im Codeproject verwednet die .NET Api nicht das Clipboard für Screenshots sondern zeichnet direkt in ein Bitmap rein.


using ( Graphics memoryGrahics = 
                Graphics.FromImage( memoryImage ) )
        {
            memoryGrahics.CopyFromScreen( rc.X, rc.Y, 
               0, 0, rc.Size, CopyPixelOperation.SourceCopy );
        }

Und falls das nicht geht, cache den Inhalt vom Clipboard halt kurz zwischen, speicher das Bild und hol dir dann den Cache wieder ins Clipboard.

Gruß

LordK

13.04.2006 - 18:48 Uhr

Naja das ist jetzt vielleicht nicht die ultimative Lösung, aber gehen würde sie bestimmt.

Du könntest "einfach" einen Screenhot von dem Control machen und diesen Speichern.

Beim Codeproject gibts ein Projekt das mit Screen Capture unter .NET 2.0 beschäftigt.

Zu finden ist es hier: Screen Capture

Gruß

LordK

13.04.2006 - 13:30 Uhr

Original von IamTheBug
und wenn du bei der form als startoption "minimized" angibst?
dann müsste er doch so starten, wie als wenn du es durch den button klick minimirt hast oder?
und dann sollte es ja gehen wenn es durch das klicken geht.

Das Problem ist, das die Configs erst im Konstruktor des Haupt Forms ausgelesen / geladen werden.

Wobei ich halt der Meinung war, wenn ich nach erzeugen des Forms den Status auf minimized setze, müsste das den selben effekt haben, da ja in beiden Fällen die Methode SizeChanged aufgerufen wird.

Zumindest in meiner Theorie 😁

13.04.2006 - 13:17 Uhr

Hallo Zusammen,

ich hab eine Applikation, die lediglich über ein Tray Icon verfügt.
Dazu habe ich die Option ShowInTaskbar auf False gesetzt.

Wenn das Programm nun minimiert oder geschlossen (sizeChanged und closing sind überschrieben) wird, verstecke ich das Fenster mit Hide(). Das klappt soweit auch ganz gut, wenn ich nun ALT+TAB drücke ist nichts zu sehen.

Ich hab in das Programm nun eine Option eingebaut, dass es direkt minimiert startet. Nach Programmstart ist das Fenster auch nicht zu sehen, allerdings erscheint das Programmicon bei ALT+TAB. Wenn ist es dann auswähe, erscheint das Programmfenster. Wenn ich dann dort wieder auf schließen oder minimieren klicke versteckt sich das Fenster wieder und ist auch nicht über ALT+TAB zu sehen.

sizeChange ist wie folgt überschrieben:


private void MainView_SizeChanged( object sender, EventArgs e )
{
	if (this.WindowState == FormWindowState.Minimized)
	{
		this.Hide();
	}
}

Und beim Programmstart frage ich dann wie folge eine Variable ab:


if (pgmOptionen.minimiertStarten == true)
	this.WindowState = FormWindowState.Minimized;

Hat jemand eine Idee, wie ich den Fehler beheben / umgehen kann?

Danke & Gruß

LordK

03.04.2006 - 23:46 Uhr

Hallo Leute,

ich bin langsam am verzweilfen.

Ich hoffe ihr könnt mir jetzt irgendwie weiterhelfen.

Ich hab ein kleines 7" Touchscreen LCD, das per USB am Recher hängt.
Für das Display gibt es ein SDK in Form einer DLL über die das Device angesprochen wird.

Für das Teil habe ich mir jetzt ein Programm geschrieben, um andere Programme per Touchscreen starten zu können.

Auf dem Screen (320x240) taucht eine Matrix mit 12 Kästchen auf. Wenn auf eines der Kästchen drauf gedrückt wird, soll das entsprechend hinterlegte Programm gestartet werden. Soweit so gut. In der Theorie und in der Entwicklungsumgebung funktioniert das soweit auch, aber...

Sobald ich das Programm nicht über die IDE starte, sprich, ich erstelle ein Assembly, kopiere es an einen anderen Ort und starte es von da, gibt es probleme beim Starten der Anwendungen, das diese nicht den Fokus kriegen.

So nun nochmal im Detail:

Mein Programm hat die Option über einen Link im Autostart mit Windows zu starten. Das Programm ist auch nür über ein Tray-Icon sichtbar. Jetzt starte ich z.B. die Command Shell (cmd.exe) unmittelbar nach dem Booten über das LCD. Die Dos-Box sich und bekommt den Fokus, sprich ich kann darin schreiben.
Wenn ich nun ein paar Buchstaben eintippe und anschließend Notepad über das LCD Starte, bleibt der Fokus auf der Dos-Box und Notepad öffnet ich im Hintergrund.

Genauso verhält es sich auch, wenn ich z.B. Firefox über das LCD geöffnet habe und danach versuche den Explorer über das LCD zu starten.

Ich habe schon einges über die Winapi probiert um einen Fokus zu "erzwingen" (Showwindow, BringToFront, Activate,...) aber nichts hat die Lage wirklich verbessert.

Das komisch daran finde ich immernoch, dass es einwandfrei funktioniert, wenn das Assembly von durch die IDE gestartet wird.

An der DLL kann es nicht liegen, da ich das selbe Projekt bereits in einer anderen Programiersprache realisiert hat, und da funktioniert zumindest der Aufruf der Programm einwandfrei.

Hier ist der Code, mit dem ich die Anwendungen Starte:


System.Diagnostics.Process process = new System.Diagnostics.Process();

if (programm.pgmParameter != "")
process.StartInfo.Arguments = programm.pgmParameter;

process.StartInfo.FileName = programm.pgmPfad;

int index = programm.pgmPfad.LastIndexOf("\\");
process.StartInfo.WorkingDirectory = programm.pgmPfad.Substring(0, index);
process.StartInfo.UseShellExecute = true;
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
process.Start();

Hier auch nochmal ein Bild angehängt, wie es auf dem Display aussieht (zum besseren verständnis).

[EDIT]

Was ich vergessen habe zu erwähnen, über das Kontextmenü vom Tray Icon gibt es ebenfalls die Möglichkeit die eingetragenen Programme zu starten. Und wenn die Programme über das Tray Icon gestartet werden, funktioniert das mit dem Fokus auch einwandfrei.

[/EDIT]

Ich hoffe, jemand von Euch hat noch eine Idee.

Gruß

LordK

P.s.

Ist es irgendwie möglich, auf die Windows API Konstaten zuzugreifen? Z.B. für die Showwindow Funktion auf die Konsaten SW_SHOWNORMAL. Bin bisher noch nicht dahinter gestiegen, wie man die nutzen kann.

06.03.2006 - 12:25 Uhr

Hola,

sorry wenn ich da Thema nochma aufgreife, aber irgendwie komme ich damit nicht zurecht.

Ich hab ein meine Anwendung die XPExplorerbar vom Codeproject als CustomControl eingebunden.

Wenn ich die Anwendung jetzt kompiliere, kopiert er die xpexplorerbar.dll direkt ins ausgabeverzeichnis zur exe datei.

Was muss ich machen, wenn ich die .dll Datei(en) für Custom Controls jetzt in einem Unterordner names Controls haben will?

Wenn ich Sie nach dem kompilieren einfach in ein unterordner umkopiere findet er sie logischerweise nicht mehr und stürzt ab.

Und über das Postbuildereignis kann ich sie ja auch nur im Nachhinein verschieben oder?

Danke & Gruß

LordK

03.03.2006 - 19:46 Uhr

Original von talla
Doch, genau dafür werden SourceSafe und Co. verwendet. Du fügst deine Datei dem Repository hinzu und sie ist dann ertmal im Prinzip gesperrt. Dann willst du die bearbeiten und checkst die aus. Dann bist du fertig mit bearbeiten und checkst die ein, und immer so weiter. Und wenn du dann merkst. Ach was ich seit letztens gemacht hab war Mist, kannst du dir nen alten Stand wieder herstellen lassen.

Ob du nun ein/auscheckst oder wie du es nennst mit Generationen arbeitest. Ist doch genau das gleiche.

Genau darum gehts es ja.

Ich will die Änderungen zwischen dem Auschecken und wie der Einchekcen nicht verlieren.

Qusi so als würde mit jedem drücken auf STRG+S die Datei wieder eingecheckt und dann auch gleich wieder ausgecheckt.

Bsp.

Datei öffen
10 zeilen code schreiben
speichern
5 zeilen code woanders löschen
speichern
wieder 20 zeilen code schreiben
speichern
wieder 10 zeilen code irgendwo in der Datei gelöscht
speichern
5 Zeilen Code schreiben schreiben
speichern

!!! Erkenntniss:
Mist, die ersten 5 gelöschten Zeilen code waren ja doch notwendig !!!

Was nun?

Nochmal schreiben = ggf. Aufwand
Undo bis die zeilen wieder da stehen = neugeschriebener Code geht verloren

Würde jetzt bei jedem Speichern eine Backup der Datei als Kopie in Form eine nummerierten Generation angelegt, könnte ich einfach eine der alten Dateien laden und die 5 Zeilen wieder per C&P aus der Datei raus holen und wieder in der aktuellen Version einfügen.

Mit z.B. CVS müsste ich nach jedem Speichern erstmal auschecken, damit er die Änderungen ins Repository übernimmt und ich eine ältere Version da wieder herstellen kann.

Oder kann man das einstellen, das mit jedem Speichern eine Version in Repository angelegt wird?

Gruß

LordK

03.03.2006 - 17:00 Uhr

Sorry wenn ich jetzt nochma so dumm nachfrage, aber so wie ich das verstanden habe, übernimmt z.B. Subversion die Änderungen bzw. die Differenz nur, wenn ich die Datei wieder einchecke. Einzelne Änderungen innerhalb der bearbeitung der Datei werden dort nicht gespeichert oder?

Mir geht es einfach darum, dass ich relativ viel speichere währen ich den Code schreibe. Und da passiert es leider auch zwischendrin mal, dass ich ausversehen etwas lösche oder überschreibe das ich eigentlich noch gebraucht hätte.

Wenn ich jetzt mit Undo wieder alles rückgängig mache, dann gehen natürlich auch alle änderungen nach der "fatalen" änderung wieder vorloren.

Und wenn die Datei in Generationen gespeichert wird, kann ich einfach eine ältere Version wieder aufrufen in der der Text raus kopieren.

Ich hoffe ich konnte halbwegs verständlich ausdrücke was ich vorhabe.

Gruß

LordK

03.03.2006 - 11:45 Uhr

Hm ok, hab jetzt mal geschaut.

Das ist ja alles nur für teuer Geld zu bekommen...

Naja mal weiter suchen.

Danke & Gruß

LordK

03.03.2006 - 11:02 Uhr

Hallo Zusammen,

gibt es ein Plugin (oder eine Einstellung in VS.2005 die ich übersehen habe), um die Source Codes in Generationsdateien zu speicher?

Beispiel:

Ich habe ein Projekt, ändere etwas in der Form1.cs und drücke STRG+S.
Dann sollte im Projektordner ein Unterordner mit dem Namen Backup erstellt werden, wo die Datei nochmal unter dem namen Form1.1.cs gespeichert wird. Wenn ich jetzt code verändere oder hinzufüge und wieder STRG+S drücke, soll die Datei wieder gespeichert werden und wieder ein Kopie mit dem Namen Form1.2.cs angelegt werden.

So dass ich im zweifelsfalls auf eine vorherige Version zurück greifen kann.

Das geht solange weiter, bis eine bestimmt Grenze erreicht ist (z.B. 15 Generationen). Mit speichern der Datei Form1.16.cs wird dann die Datei Form1.1.cs gelöscht.

Wisst ihr ob es etwas derartiges gibt? Oder kann man sich sowas vielleicht selber schreiben?

Danke & Gruß

LordK

02.03.2006 - 17:02 Uhr

Original von cadi

Alternativ fällt mir sonst nur eine Custom GINA ein, damit währe das auf jeden Fall zu lösen. Das ist aber meisten nicht praktiabel, da die meisten Kunden/User sowas nicht wollen.

Ja das war auch schon meine Idee.

Allerdings wollte ich über die GINA nur ein SAS anstoßen. Hab über die MSDN eine Funktion namens WLXDisplaySasNotify() oder sowas gefunden. Allerdings bin ich dann nicht durch die MSDN durchgestiegen was ich da alles aufrufen muss.

da muss dann irgendwie ein init vorweg laufen und ein neogating und was weiß ich nicht noch alles. Das was dann zu hoch für mich, weil ich die Parameter nicht mal mehr verstanden habe, die übergeben werden müssen. Die MSDN / GINA / WINLOGON ist wahrscheinlich der einzig richtige weg, aber auch der mit abstand koplizierteste...

Und ein direkter Lock der Workstation wäre wirklich schon zu weit.

Aber schon mal danke für eure Hilfe.

Gruß

LordK

02.03.2006 - 07:13 Uhr

Ich will ja eben nicht den Taskmanager starten sondern den "Windows-Sicherheit" screen.

Wie beschrieben bekommt man den bei STRG+ALT+ENTF wenn die Willkommensseite deaktiviert ist.

Dort sind man die Benuterzdaten und hat 6 Aktionsmöglichkeitne:

Computer Sperren..., Abmelden..., Herunterfahren...,
Kennwort ändern..., TaskManager, Abbrechen

Gruß

LordK

01.03.2006 - 20:57 Uhr

Hallo Zusammen,

ich hab ausnahmsweise mal das umgekehrte Problem.

Ein Kumpel fragte mich, ob ich nicht ein Tool schreiben könnte, dass ein STRG+ALT+ENTF an das OS schickt, damit der "Windows-Sicherheit" screen angezeigt wird.

Meine ersten versuche mit dem Send-Command sind kläglich gescheitert (war aber auch irgendwie zu erwarten).

Meine nächste Idee war über eine "gina.dll" zu gehen. Allerdings bin ich da an der MSDN gescheitert, weil ich patu nicht verstehe, was man da mit welchen Parametern in welcher reihenfolge aufrufen muss.

Hat jemand vielleicht noch eine Idee, was ich machen könnte um den Screen Direkt aufzurufen?

Für die Leute die ihn nicht kennen. Einfach mal bei Windows bei den Benutzerkonten unter "Art der Anmeldung" die Option "Willkommensseite Verwenden" deaktivieren.

Vielen Dank für sämtliche anregungen.

Gruß

LordK

02.12.2005 - 14:19 Uhr

Nein das geht leider nicht, da schmiert mir gleich das ganze Programm ab.

Andere Ideen?

02.12.2005 - 07:25 Uhr

Danke für den Tip,

hab ich schon probiert, leider bleibt die Anzeige leer, wenn ich über WMI auf Speed abfrage.

So sah meine Abfrage aus, vielleicht war die auch einfach falsch:

WMI("Select * FROM Win32_NetworkAdapter,Name,Speed,MACAddress,Caption")

Gruß

LordK

02.12.2005 - 07:16 Uhr

Hi Leute,

ist es irgendwie möglich, die Geschwindigkeit einer Netzwerkkarte zu ermitteln und diese in kb/sec auszugeben?

Zum Beispiel hab ich hab einen FTP Server laufen, der nicht anzeigt, mit wieviel KB/sec. der Client hoch oder runter lädt. Und da wollte ich ein Programm schreiben, dass unabhängig von einer Anwendung einfach analysiert mit wieviel Speed die Netzwerkkarte belastet wird.

Jemand ne Idee?

Gruß

LordK

27.11.2005 - 21:11 Uhr

Hi,

es gibt ein Freeware Programm, dass nennt sich "Winkey". Damit kannst du Hotkeys mit der Windowstaste selbst definieren um Programm zu starten oder I-Net Adressen zu öffnen usw.

Tipps einfach mal bei Google ein, wenn dus net findest (was ich nicht glaube) meld dich bei mir, dann schick es dir.

Gruß

LordK

27.11.2005 - 20:28 Uhr

Oder versuchs mal mit AutoIt 3

Auto It v3

Das ist wohl ne relativ Mächtige Script / Batch sprache, über die von außen per DLL zugegriffen werden kann (AutoItX - DLL/COM control. Add AutoIt features to your favorite programming and scripting languages!).

AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys).

Allerdings müsstest du dir dann wohl selber ne Wrapper Klassen, mir ist noch keine über den Weg gelaufen.

Gruß

LordK

10.09.2005 - 18:34 Uhr

Wenns nur eine lokale Anwendung seien soll, dann würde ich SQLite empfehlen. Das ist eine lokale Datenbank. Du bindest einfach eine DLL Datei ein (da gibts breites eine gute Wrapper Klasse für .NET) und dann legst du mit dem Programm eine Datenbank in einer Datei ab, die du mittels SQL abfragen kannst. Sehr einfach und sehr genial.

Ich verwende so gut wie keine Dateien mehr zur Datenspeicherung sondern nur noch SQLite.

Gruß

LordK

edit:

Hier gibts die Wrapper Klasse

12.06.2005 - 12:30 Uhr

Danke für die Info.

Welche Möglichkeit hab ich denn dann, das neu erstelle "Bild" komplett zu speichern?

Bzw. was für Objekt muss ich denn da entwerfen, damit ich die vor die Picturebox legen kann, per D&D verschieben und anschließend als Gesamtbild zeichnen?

Danke & Gruß

LordK

12.06.2005 - 08:29 Uhr

Hi Leute,

ich hab ein "Problem" bei dem ich nicht mal so ganz weiß, wo ich da beim Suchen anfangen soll.

Also ich erstelle ein leeres Bitmap. Dieses leere zeige ich in einer PictureBox an. Als nächstes will ich ein kleineres Bitmap (nicht leer), mittels drawImage() auf das leere Bitmap draufzeichnen. Soweit alles kein Problem, aber...

Wie krieg ich es jetzt hin, dass ich das kleinere Bitmap mittels Drag&Drop auf dem größeren Bitmap verschieben kann?

Geht das überhaupt so? Da ja schließlich kein direktes Objekt von dem Bitmap existiert bzw. funktioniert das dann immernoch wenn ein zweites Bitmap hinzufüge. Also lassen sich dann beide noch verschieben?

Vielen Dank im Voraus.

Gruß

LordK

17.05.2005 - 21:09 Uhr

Hi,

ich weiß nicht in wie fern das noch aktuell für dich ist, aber es geht auch über ein Keyboard Event zumindest unter XP / 2000 da es quasi auf ein Multimediakeyboard reagiert:


[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void keybd_event(byte bVk,byte scan ,int flag,int info);
		
private const int KEYEVENTF_EXTENDEDKEY = 0x01;
private const int KEYEVENTF_KEYUP = 0x02;

private void button2_Click(object sender, System.EventArgs e)
{
	// Lautstärke erhöhen

	keybd_event(0xAF,0,KEYEVENTF_EXTENDEDKEY | 0,0);
	keybd_event(0xAF,0,KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0);
}

private void button3_Click(object sender, System.EventArgs e)
{
	// Lautstärke verringern

	keybd_event(0xAE,0,KEYEVENTF_EXTENDEDKEY | 0,0);
	keybd_event(0xAE,0,KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0);
}

private void button4_Click(object sender, System.EventArgs e)
{

	// System Mute (Ton aus)

	keybd_event(0xAD,0,KEYEVENTF_EXTENDEDKEY | 0,0);
	keybd_event(0xAD,0,KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0);
		
}

VK_VOLUME_MUTE (AD)
Windows 2000/XP: Volume Mute key

Hier ist die genaue Funktionsdefinition der Windows API

keybd_event

bzw. hier die Virual KeyCodes

Gruß

LordK

03.05.2005 - 09:22 Uhr

Versuch mal ein @ davor zu schreiben, das sollte die Sonderzeichen ignorieren.

string test = @textbox1.rtf;

Gruß

LordK

02.05.2005 - 15:53 Uhr

Original von Quallo
Gibt es da nicht so eine Process Klasse mit Start-methode?

Wahrscheinlich nur eine plötliche Eingebung ohne entsrpechung in der Realität g

Grüße Christoph

Du meinst doch nicht etwa das mystische


Process p = new Process();
p.StartInfo.FileName = @"c:\\Programme\\Office\\powerpoint.exe";
p.Start (); 

Oder? 😉

02.05.2005 - 15:13 Uhr

Ah alles klar, besten Dank 🙂

Das hätte ich mal früher wissen müssen... 😁

02.05.2005 - 13:07 Uhr

Original von Noodles
Als Workaround funktioniert folgendes:

string p = @"C:\\Programme\\UltraEdit\\Templates\\*.*";  
int j = p.LastIndexOf( @"\", p.LastIndexOf( @"\" ) - 1 );  
p = p.Substring( j + 1 );  

Sorry wenn ich da mal kurz OT zwischenfrage, aber was hat denn da jeweils das @ zu bedeuten?
Das ist mir noch nie irgendwo untergekommen.

Danke & Gruß

LordK

30.04.2005 - 07:24 Uhr

Fall du eine Winamp Steuerung über die Window Messages machen willst findest du hier eine überblick über die Messages die du schicken kannst. Winamp SDK

Weiterhin findest du beim Code Projekt ein Tutorial wie du die Window Message mit Winamp benutzen kannst. Das Beispiel ist zwar nur um den Song Title rauszubekommen, aber ich glaube das läßt sich gut ableiten.

Gruß

LordK

30.04.2005 - 07:14 Uhr

Hi,

wenn du Icons brauchst, kannst du auch mal bei DockZone gucken. Da gibt es ein paar coole Icons, fall sie dir nicht zu "verspielt" sind.

Ich hab den Designer der Icons mal per Mail gefragt ob ich ein paar seiner Icons in meinen Programmen verwenden darf und meinte er hätte nichts dagegen.

Aber vielleicht solltest du doch nochmal persönlich fragen wenn du welche nutzen willst.

Gruß

LordK

29.04.2005 - 16:26 Uhr

Hi,

wenn du Icons brauchst, kannst du auch mal bei DockZone gucken. Da gibt es ein paar coole Icons, fall sie dir nicht zu verspielt sind.

Ich hab den Designer der Icons mal per Mail gefragt ob ich ein paar seiner Icons in meinen Programmen verwenden darf und meinte er hätte nichts dagegen.

Aber vielleicht solltest du doch nochmal persönlich fragen.

Gruß

LordK

28.04.2005 - 20:36 Uhr

Original von svenson
Ich bekomme auch eine OutOfHumorException!

ROFL 👍

22.04.2005 - 11:44 Uhr

Die Idee ist schon net schlecht 😉

Mich würde mal interessiern was Jemand aus ner Personalabteilung dazu sagt, der sich Tagtäglich mit Bewerbungen rumschlagen muss 🤔

Gruß

LordK

21.04.2005 - 18:27 Uhr

Seit Ausbildungsbeginn 😉

Also sprich ca. 2 Jahre.

Hatte zwar vorher in der Schule in Informatik mit Java ein bissi was gemacht, aber das halt nur in der Schule. Zuhause wollte ich mich immer damit beschäftigen, kam aber irgendwie nicht dazu. Tja und jetzt lern ich eigentlich schon wieder mehr Programmiersprachen als mir lieb ist 😉

Gruß

LordK

19.04.2005 - 15:13 Uhr

Original von Quallo
Wow, super!

Damit kann man ja schon mal testen.
Schön wäre es wenn das Beep jetzt auf dem Lautsprecher ausgegeben wird, aber so sollte es reichen.

Hä?

Wie auf dem Lautsprecher ausgegeben wird?
Meinst du normal über die Boxen oder was?

Hm.. da ich kein Speaker hab (Notebook-user 😁 ) wird das bei mir sowieso
über den Lautsprecher emuliert. Vielleicht gibts da aber noch anderweitig ne möglichkeit das "umzulenken"...

Gruß

LordK

19.04.2005 - 09:47 Uhr

Schau mal hier

Das ist genau das was du suchst.

Ich würde die gerne den C# code dazu posten, aber leider sitze ich grad in der Schule und komme net an den Code in dem ich das Verbaut hab.

Aber ich glaube für das DWORD hab ich int genommen.

/edit

Hab grad festgestellt, das ich VS.NET auf dem Rechner hier hab 😁

Habs mal schnell in Code umgesetzt 😉


class Class1
{
[STAThread]
static void Main(string[] args)
{
Beep(100,1000);
}

[DllImport("Kernel32.dll")]
private static extern bool Beep(uint freq,uint dauer); 
}

Generell find ich die Idee geil 🙂

Kannst die Klasse ja mal irgendwo posten wenn du sie fertig hast 😉

Gruß

LordK

17.04.2005 - 15:04 Uhr

Naja so schwer sind die Dinger auch net zu benutzen 😉


.
.
.
using Org.Mentalis.Multimedia;
using Org.Mentalis.Files;

.
.
.

private void playSound()
{

    SoundFile sFile = new SoundFile("C:\\test\\lied.mp3"); // Oder ein string mit dem absoulten Pfad der Datei übergeben
    sFile.play();

}

.
.
.



Und das wars auch schon.

Natürlich musst du noch die drei Mulitmediadatein in dein Projekt mit aufnehmen (SoundFile.cs / MediaFile.cs / MediaException.cs).

Und dann sollte es funktionieren.

Falls du doch eine Methode mit einer exterenen dll versuchen willst, kannst du auch unter www.fmod.org gucken.

Gruß

LordK

16.04.2005 - 20:19 Uhr

Pauschal kann ich das jetzt nicht sagen, aber wenn du ein wenig mit C++ vertraut bist, könntest du es evtl. hier rauslesen, da gibts eine Funktion getClipboardSize()

clipboard

Gruß

LordK

16.04.2005 - 20:09 Uhr

Du solltest die Variablen nicht mit ref übergeben. Der C-Code geht automatisch auf die Speicherstelle der Variablen.

16.04.2005 - 19:25 Uhr

Könntest du mal definieren was du mit Größe meinst?

genutze Größe in byte? Menge der Textzeichen(die evtl enthalten sind)?

Ich kann mir grade nicht vorstellen welche Größe du meinst.

Gruß

LordK

16.04.2005 - 19:23 Uhr

Original von SmokingFish
danke dir, es lässt sich zumindest jetzt compilen =) ob es denn letztendlich funktioniert finde ich auch noch raus^^

noch eine kleinigkeit :

typedef void (*_NewFunction) (char *name, void *pointer, int in, int out);  
protected static extern uint NewFunction(char name, void pointer, int _in, int _out);  

das void pointer, es soll an der stelle wohl der pointer auf eine c++ funktion übergeben werden , void is in c# allerdings nicht erlaubt , gibt es da eine alternative?

Hm is mir jetzt nichts bekannt. Vielleicht könntest du mal probieren das Void einfach weg zu lassen. Falls da auch nichts übergeben werden soll, könntest du "null" verwenden. Damit würdest du aber nur die Parameterliste füllen und nichts übergeben.

Aber das man irgendetwas in c++ void übergeben kann wusste ich auch nicht.

Gruß

LordK