Zum Inhalt springen

Trux

Mitglieder
  • Gesamte Inhalte

    126
  • Benutzer seit

  • Letzter Besuch

Beiträge von Trux

  1. kann nicht von "string" in "System.Diagnostics.ProcessStartInfo" konvertiert werden.

    Finde ich recht eindeutig:

    
    using System.Diagnostics;
    
    [...]
    
    ProcessStartInfo startInfo = new ProcessStartInfo("www.rtl.de");
    
    Process process = new Process(startInfo);
    
    process.Start();
    
    
    oder (ungetestet):
    
    System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("www.rtl.de"));
    
    

  2. Naja, wenn er 1,5 min braucht ist es liegt das Problem wohl ein wenig tiefer...

    Denke das du die Verbindung via DNS-Name aufbaust, um den namen aufzulösen und rauszufinden das der zielrechner grade nicht erreichbar ist braucht es alles zusamme denke ich seine zeit. Was du altanativ machen kannst ist die rechne einfach so "anzupingen" ping-classen findeset du eine menge via google.

    Oder einfach IP-Addressen verwenden ;)

  3. ich denke es kommt drauf an wo man die Berechnungen ausführt...

    (Also ich hab es jetzt alles nicht getestet, ist nur so aus der Luft gegriffen)

    Also wenn man die "Krasse berechnung" im ButtonClick oä ausführt kann ich mir gut vorstellen das es nicht hinhaut mit dem wait cursor...

  4. Also ein Funktionsaufruf ist ja bekanntlich syncron.

    Wenn du zu beginn den Cursor auf wait stellst und in deiner Methode noch was machst, dann wieder auf normal schaltest kann der Thread in dem du ausgeführt wirst doch garnich den Cursor ändern.

    Will heißen das du den cursor oder die berechnung (schleife) in einem anderen thread-context ausführen solltest.

  5. Also ganz wichtig ist das es in C# keine "globalen" funktionen gibt.

    Es geht einfach nicht, weil die sprache komplett objekt orientiert ist, und nicht nur so halb wie c++.

    Also brauchst du schonmal eine Klasse in der du deine Threading methode hast. Inwieweit das Threading im Compact-Framework unterstützt wird kann ich nicht sagen.

    
    using System;
    
    using System.Threading;
    
    namespace example
    
    {
    
         public class ThreadExample
    
         {
    
              public void Start()
    
              {
    
                   Thread t = new Thread(new ThreadStart(Thread));
    
                   t.Start();
    
              }
    
    
              private void Thread()
    
              {
    
                   while(true)
    
                   {
    
                        //Mach was
    
                        Thread.Sleep(1000);
    
                   }
    
              }
    
         }
    
    }
    
    

  6. Also wenn du die Form deiner applikation drucken möchtest kannst du das Graphics über CreateGraphics() von der Form abrufen.

    Wenn der druck kram von C# (hab noch nie gedruckt) ein image haben möchte (wo von ich ausgehe) kann man den Graphic mittels

    BitBlt kopieren:

    
    /// <summary>
    
    /// BitBlt
    
    /// </summary>
    
    [DllImport("gdi32.dll", ExactSpelling=true, SetLastError=true)]
    
    public static extern bool BitBlt(IntPtr hObject,int nXDest,
    
                                       int nYDest,
    
                                       int nWidth,
    
                                       int nHeight,
    
                                       IntPtr hObjSource,
    
                                       int nXSrc,
    
                                       int nYSrc,
    
                                       TernaryRasterOperations dwRop);
    
    
    Graphics gr = Form.CreateGraphics(); //Graphics von der Form erstellen lassen
    
    IntPtr pGr = gr.GetHdc(); //Pointer auf den Hdc
    
    BitMap bmp = new BitMap(Form.Width,Form.Height); // Neues Bitmap erstellen => Ziel
    
    Graphics tmpGr = Graphics.FromImage(bmp); //Temp Graphics für das BitMap
    
    IntPtr pTmpGr = tmpGr.GetHdc(); //Pointer vom tmpGraphis
    
    BitBlt(pTmpGr,0,0,Form.Width,Form.Height,pGr,0,0,0x00CC0020); //Graphic inhalt kopieren
    
    gr.ReleaseHdc(pGr); //Hanleds wieder releasen
    
    tmpGr.ReleaseHdc(pTmpGr);
    
    gr.Dispose();//Disposen
    
    tmpGr.Save();
    
    tmpGr.Dispose();
    
    
    bmp ///Bitmap von der Form
    
    

  7. Die möglichkeite besteht.

    Es kommt bei der Umsetzung jedoch auf deine Struktur drauf an.

    Wenn du eine object-factory über remoting abrufst kannst du es natürlich mithilfe der Factory limitieren.

    Oder du überschreibst die CreateObjRef (von Marshal) und implementierst einen statischen counter.

    Und wenn der wert überschritten wird kannst du mithilfe (ich glaube) remoting services das angeofrderte object wieder disconnecten (disconect object).

    Als dritte möglichkeit kann man sicherlich auch von ObjRef erben (MSDN ObjRef) es damit realisieren.

  8. Ich habe unter C# ein Graphics-Object und möchte aus einer C++ DLL via Com mit diesem Graphics-Object malen.

    Das ganze sieht vie folgt aus:

    Die C++ DLL wurde mit ATL erstellt, und hat ein Interface mit einer Methode Draw(HDC* hdc).

    Unter C# habe ich ein ComObject mit der Methode Draw(IntPtr hdc)

    wenn ich nun von einem Graphics den HDC pointer (GetHdc()) abrufen und übergebe, bekomme ich auf der C++-Seite nur ein pointer mit dem nicht viel anzufangen ist.

    Ist mein weg grundlegend falsch, oder gibt es da ein trick wie ich das gewünschte ziel erreichen kann?

    Danke für eure hilfe

  9. Hallo,

    ich würde gerne eine .Net-Assembly via VB aus Excel heraus aufrufen.

    Mit C++-DLL's ist das ja entsprechend einfach. ala

    
    Private Declare Function Test Lib "Test.dll" Alias "?Test@@YG@@Z" (ByVal strText As String, ByRef var As Variant) As Variant
    
    
    VB-Code:
    
    public function schreib(ByVal strText As String) As Variant
    
       Dim varRtn As Variant
    
       schreib = Test (strText, varRtn)
    
    End Function
    
    

    somit kann ich in X-beliebiger Celle

    =schreib("Testausgabe")

    eingeben und VB würde meine Funktion in der DLL aufrufen.

    Kennt irgendwer eine Möglichkeit ähnliches für eine .Net-DLL zu schaffen?

    Gruss und Danke

    Trux

  10. Timeout.Infinite-Feld:

    Eine Konstante, mit der eine unbegrenzte Wartezeit angegeben wird. Dieses Feld ist konstant.

    Thread.Interrupt-Methode:

    Unterbricht einen Thread, der sich im WaitSleepJoin-Threadzustand befindet.

    Also ich weiß ja nicht was du erreichen möchtest, aber ich würde das

    Thread.Sleep(Timeout.Infinite);
    als auch das
    firstThread.Interrupt();

    rausnehmen

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...