Laden...

Profil von habeKA

myCSharp.de - Member Mitglied seit
H
habeKA
myCSharp.de - Member
26
Themen
90
Beiträge
Dabei seit
07.11.2007
Letzte Aktivität
vor 15 Jahren
Herkunft
Köln
Erstellt vor 15 Jahren

Hi alle zusammen,

nach langerzeit Programmier ich mal wieder was mit C#. Ich versuche grade für meine Abschlusspräsentation in 2 Woche ein Timer zu Programmiern welcher im Vordergrund läuft und mir die Zeit anzeigt.

Soweit so gut. Habe mir einen neuen Even-Handler gebaut und lasse diesen auf F5 hörchen.


            this.KeyPreview = true;
            this.KeyDown += new KeyEventHandler(this.Form1_Load);

Das läuft auch alles ganz gut. Wenn ich F5 drücke läuft der Timer los.

Jetzt habe ich mittels folgendem Code die Form immer in den Fordergrund gestellt.


        [DllImport("User32.dll")]
        static extern bool SetForegroundWindow(IntPtr hWnd);

        [DllImport("User32.dll")]
        public static extern int AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, bool fAttach);

        [DllImport("User32.dll")]
        public static extern IntPtr GetForegroundWindow();

        [DllImport("User32.dll")]
        public static extern IntPtr GetWindowThreadProcessId(IntPtr hwnd, IntPtr lpdwProcessId);

...

public static void SetForegroundWindowEx(Form window)
        {
            IntPtr hndl = window.Handle;
            IntPtr threadID1 = GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero);
            IntPtr threadID2 = GetWindowThreadProcessId(hndl, IntPtr.Zero);
            window.TopMost = true;

            if (threadID1 == threadID2)
            {
                SetForegroundWindow(hndl);
            }
            else
            {
                AttachThreadInput(threadID2, threadID1, true);
                SetForegroundWindow(hndl); ;
                AttachThreadInput(threadID2, threadID1, false);
            }
        }

Das Fenster ist nun immer im Vordergrun, jedoch nich im Fokus.
Wie kann ich auch Keys abfangen wenn das Fenster NICHT im fokus ist?

Danke für die Hilfe

HabeKA

Erstellt vor 16 Jahren

Hi,

nach lange Zeit bastel ich grade wieder mit C# rum und steh grade vor einem kleinen Problem. Ich möchte ein kleines Programm entwickeln das mein Outlook ausliest.

Danke [URL= FAQ zur Office Programmierung] wars bis hier hinn relativ einfach. Jetzt habe ich aber ein Problem. Wie kann ich in einem eingebundenen Postfach (nicht meins aber ich habe rechte auf das Postfach) in einem Unterordner zugreifen .

Die normalen Ordner aus meinem Postfach kann ich auslesen (s.u.) nur wie ich das andere Postfach anspräche weiss ich nicht.
Ich höffe ihr könnt mir helfen.

Code den ich bis jetzt haben.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Outlook;

namespace test2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string test = "";    

            Microsoft.Office.Interop.Outlook.Application objOutlook = new Microsoft.Office.Interop.Outlook.Application();
            Microsoft.Office.Interop.Outlook.NameSpace objNamespace = objOutlook.GetNamespace("MAPI");
            Microsoft.Office.Interop.Outlook.MAPIFolder objInbox = objNamespace.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
//hier müsste ich ein neues MAPI Obj erzeugen welches auf das neue PW verweist! Nur wie?
           


            for (int i = 0; i < objInbox.Items.Count; i++)
            {

                try
                {
                    Microsoft.Office.Interop.Outlook.MailItem myMailItem = (Microsoft.Office.Interop.Outlook.MailItem)objInbox.Items[i];
                    if (myMailItem.Subject == "test")
                    {
                    test += myMailItem.Body;
                    myMailItem.Move(objInbox);//Hier soll dann mal Ordner XY aus Postfach xy stehn
                    }

                }

                catch { }

            }
            richTextBox1.Text = test.ToString();
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

mfg

habekA

Erstellt vor 17 Jahren

Also ich weiß garne wo dein Problem ist?Du sagstest du hast ein Performanceproblem schreibst aber nur von einer hohen Speicherauslastung. Und das scheint, zumindest hast du es net so ausgedrückt, als ob das dem Spielfluss nicht beeindrächtigt.

Hm hohe Speicherauslastung zählt nicht zur Performance 🤔 😉
Du hast schon recht das Spiel an sich wird davon nicht beeinträchtigt. Alles läuft flüssig und ohne ruckler.
Aber trotzdem muss das mit dem hohen Speicher verbrauch nicht sein.

@mcs

dein Tips sind echt gut. Ich bin grade an der umsetzung drann und werde mich melden wenn ich damit fertig bin.

mfg

habeKA

Erstellt vor 17 Jahren

Danke für die Tips.

Leider kenn ich mich auch noch nicht so gut aus in dem Bereich Spieleprogrammierung, deswegen kann ich dir jetzt noch nicht sagen ob die KI asynchron zu berechne besser ist.
Ich werde einfach mal deine Tips umsetzten und schaun 😉 und dann melde ich mich wieder

mfg

habekA

Erstellt vor 17 Jahren

Welchen Timer verwendest du denn?

Den normalen Timer aus


System.Windows.Forms.Timer

Speicherproblem bei Bilder und Texturen deutet eventuell auf ein vergessenes Dispose hin.

Dachte ich zuerst auch nur es steigt nicht konstant sonder jenachdem was grade passiert.
Beispiel : Man kommt um die Ecke hat einen gegner vorsich und da man um die Ecke kommt werden die texturen neu geladen. Bääm maxwert 253MB.

Erstellt vor 17 Jahren

Moin moin,

also ich habe mich mal drann gesetzt und nen kleines 3D Game entwickelt.Naja nix besonderes einfach ein Labyrint mit ein paar Gegnern. Also wenn man so will sieht es aus wie Pacman 3D. Naja nun aber zur meiner Problem:

Also ich las die Gegner über einen Timer laufen, den Spieler und die Umwelt(also das Level).
Das läuft auch sehr sehr gut, nur performance mässig unter aller sau 😄.
Also unter aller sau heisst 253MB arbeitsspeicher frist das Spiel. Naja heutzutage ist das ja nix nur für so nen kleines Spiel doch relartiv viel.
Naja wo das Problem liegt weiss ich auch. In dem Timer für das Level wird nach einer bewegung des Spielers die Texturen immer wieder neu Berechnet und Geladen.

Meine Frage lautet also jetzt gibt es performatere lösungen um die Texturen zu überprüfen als in einem Timer?

mfg
habekA

Erstellt vor 17 Jahren

Ich hoffe aber dass ihr im Final SUPER spielt, aber trotzdem verliert! 😁

Wir verlieren nicht mal wenn wir scheiss spielen und dann sollen wir verlieren wenn wir "mal" Super spielen 😉

Erstellt vor 17 Jahren

Hi,

ich habe da ein Problem. Ich will die Main Form(Form1) neu laden sobalt eine ausgewählte bedingung erfüllt ist. So weit nicht al zu schwer. Das Problem was ich habe ist, wenn ich etwas auf der main Form gezeichnet habe lädt der die main forum nicht neu(obwohl die Bedingung truh ist).
Gibt es da was besonderes zu beachten??

Erstellt vor 17 Jahren

Ists dann als du das XP installiert hattest gelaufen??

das gleiche Problem. Das muss mit den rechten am PC zusammen hängen. Jedoch weiss ich nicht warum, denn ich bin admin.

Versuche mal die Jungs von Microsoft zu kontaktieren.

Habe ich schon nur auf die antwort warte ich noch ^^

Erstellt vor 17 Jahren

So nachdem ich die ganze Nacht versucht habe VS2008 ans laufe zu bekommen gebe ich jetzt auf

Was ich alles versucht habe :

1: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv - resetsettings

2: neuesten Updates von Microsoft herunterzuladen

3: Visual Studio mit Admin-Rechten gestartet (obwohl ich admin bin)

4: Visual Studio und framework neu installiert

5: Vista neu Installiert und dann das ganze noch mla von vorne.

6: mit RegMon alles Schüssel überprüft

7: An alle Schlüssels (wirklich alle ) lese und schreib rechten Vergeben.

8: Vista runtergeschmissen XP druff geladen und noch mal von vorne.

9: Xp wieder runter Vista drauf von vorne und nun 2005 was jetzt auch nicht meher geht installier >.<

so ein scheiss aber echt >.<

Ich kann Projekte öffnen, bearbeite, speicher eigentlich alles nur keine neues Projekt erstellen egal welches verzeichnis ich angebe !