Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von mosspower
Thema: Frage zu Screenshot
Am im Forum: Grafik und Sound

Zitat
Original von regen
Nunja, sinnigerweise sollte das Betriebssystem nur zeichnen, was tatsächlich sichtbar ist.

OK, das verstehe ich ja, vielleicht sollten wir uns an dem Namen Screenshot nicht "aufhängen". Mir persönlich reichen ja die Pixelinformationen, diese müssen doch immer an ein Ereignis, z.B. MaximizeWindow mitgeschickt werden, so dass letztendlich die Grafikkarte + Monitor das Fenster sichtbar macht - die Frage ist nur, wo stehen diese Bildinformationen. Ich kann mir nicht vorstellen, dass man das Window-Objekt direkt an den Renderer der Grafikkarte weitergibt

Naja, der Threadtitel ist leider nun auch irreführend, weil sich das Problem scheinbar nicht mit einem Screenshot lösen lässt, was eigentlich verständlich ist.

Thema: Frage zu Screenshot
Am im Forum: Grafik und Sound

Um wieder auf die Ausgangsfrage zurückzukommen. Hat wirklich niemand eine Idee, wie man bei einem Fenster, das nicht sichtbar ist (oder minimiert) an die Pixelinformationen rankommt. Das muss doch technisch gesehen gehen, dass die Infos irgendswo hinterlegt sind und dann je nach Bedarf (sichtbar schalten, wieder aktivieren aus dem Minimiertmodus) die Daten an die Grafikkarte geschickt werden. Eigentlich müsste das ja auch gehen, ohne Grafikkarte, oder? Ich brauche doch eigentlich "nur" die Pixelinfos, das würde mir schon reichen. Wie geht ihr da vor, wenn ihr wisst, dass ein Problem technisch lösbar sei muss, ihr aber die Lösung nicht kennt? Gibt ja leider keine Bücher dazu. Ich habe schon viele Stunden im Netz damit verbracht. Leider immer nur die Lösung, dass Fenster sichtbar machen und dann Screenshot durchführen. Das sieht man aber im Fenster. Ich kann nicht "normal" surfen, z.B. Spiegel und dann macht der im Hintergrund immer diese Screenshots, das bekommt man nämlich mit. Noch schlimmer ist, dass mit dieser Lösung der Bildschrim immer an sein muss. Bitte erbarmt euch und helft mir, ggf. auch Tipps, wie ich zur Lösung kommen kann. Danke schon mal im voraus.

Thema: IDE der Profis
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Kollegen,

kurz zu mir, ich entwickle jetzt seit über einem dreiviertel Jahr mit C#, die IDE ist Visual Studio 2005. Ich möchte hier keinen Glaubenskrieg vom Zaun brechen, aber ich vermisse TOTAL Eclipse. Ich habe vorher jahrelang Java entwickelt mit der IDE Eclipse. Ich persönlich sehe es so, dass es genauso ein Quantensprung von VS 2005 auf Eclipse ist, wie von VS 2003 auf VS 2005. Das einzig Positive, ist imo der Debugger. So vermisse ich sehr viele Sachen, neben der Performance, manchmal hängt der immer sekundenlang, trotz ausreichendem Speicher. Ich will jetzt nicht auf nähere Details eingehen, es ist wirklich so, wie ich im Netz gelesen habe: Visual Studio is a great tool, but Eclipse is in another league .. so, jetzt habe ich gehört, dass es Mono gibt (OK, eher interessant für Linux-Entwickler) und #develop. Daher meine Frage, gibt es Entwickler, die nicht nur wegen Kostengründen gewechselt haben? Ist die Entwicklung besser, kann man die professionell benutzen? Lohnt sich der Umstieg, oder wird unter dem Strich eher weniger "geboten"? Ich habe da noch nicht reingeschaut, wollte mir erst mal eure Meinungen dazu holen. Danke schon mal im voraus.

P.S. Nein, ich habe nicht! über die Technologie gelästert, "nur" über die IDE

Thema: [gelöst] Pixelwerte auslesen
Am im Forum: Grafik und Sound

Ja, die Breite des Bildes war nicht ohne Rest durch vier teilbar, deshalb habe ich vergessen, den "Schrott" in Stride wegzulassen. Aber, ein Tag später ist man halt schlauer.

@herbivore,

danke, das mit den 1bpp hat funktioniert, obwohl es schon komisch ist, dass wenn man z.B. ein Bild mit 4 Pixeln Breite hat, das Stride gleich 4 Bytes! lang ist obwohl man in einer Zeile nur ein halbes benötigt.

Thema: [gelöst] Pixelwerte auslesen
Am im Forum: Grafik und Sound

Hallo Kollegen,

ich gebe jetzt einfach genervt auf, und probiere es auf diesem Wege. Ich habe vorher noch nie etwas mit Bildbearbeitungen gemacht, daher vielleicht auch mein Problem, ich schnalle es einfach nicht.

Der Quellcode:

  bool printOld = false;
  Bitmap bitmap = new Bitmap("C:/tester.bmp");
  byte[,] image = new byte[bitmap.Width, bitmap.Height];

  Console.WriteLine(bitmap.PixelFormat.ToString() + Environment.NewLine);

  if(!printOld) {
    Rectangle rectangle = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
        
    for(int i = 0; i < bitmap.Height; i++) {
      for(int j = 0; j < bitmap.Width; j++) {
        Color color = bitmap.GetPixel(j, i);
        Console.Write("[{0,3},{0,3},{0,3}] ", color.R, color.G, color.B);
      }

      Console.WriteLine();
    }

    Console.WriteLine("GetPixel took [" +
      DateUtil.GetTimeSpanForNow(start).TotalMilliseconds + "]\n");
    start = DateTime.Now;

    BitmapData bitmapData = bitmap.LockBits(rectangle, 
    ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

    int stride = bitmapData.Stride;
    int totalLength = bitmapData.Width * bitmapData.Height * 3 /* Hardcoded for  24 bpp */;
    byte[] pixelInfo = new byte[totalLength];
    Marshal.Copy(bitmapData.Scan0, pixelInfo, 0, totalLength);

    for(int i = 0; i < pixelInfo.Length; i += 3) {
      Console.Write("[");
      Console.Write("{0,3},", + pixelInfo[i]);
      Console.Write("{0,3},", + pixelInfo[i + 1]);
      Console.Write("{0,3}", + pixelInfo[i + 2]);

      if(i != 27) {
        Console.Write("] ");
      }

      if(i == 12) {
        Console.WriteLine();
      }    
    }

    Console.Write("]\n");
    Console.WriteLine("Mem / Ptr took [" + 
    DateUtil.GetTimeSpanForNow(start).TotalMilliseconds + "]\n");

Die Ausgabe:
Format24bppRgb

[  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [255,255,255] [255,255,255]
[255,255,255] [255,255,255] [255,255,255] [  0,  0,  0] [  0,  0,  0]
GetPixel took [0]

[  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [255,255,255] [255,255,255]
[  0,255,255] [255,255,255] [255,255,255] [255,  0,  0] [  0,  0,  0]
Mem / Ptr took [0]

Thread done

Die Pixel passen einfach nicht, was mache ich falsch? Das Bild besteht definitiv aus 24 bpp X( ... und wie gehe ich (in Zukunft) vor, wenn ich nur 1bpp habe?

Danke schon mal für eure Hilfe.

Thema: Frage zu Screenshot
Am im Forum: Grafik und Sound

@herbivore,

ja, ich habe erst mal vor, die Daten nur für mich und mein privates! Programm zu nutzen. Sollte ich dennoch Daten öffentlich zur Verfügung stellen, dann habe ich vor, dass ich ausdrücklich auf die Herkunft verweise, natürlich nur nach vorheriger Genehmigung des "Lieferanten".

Gruß

P.S. Gibt es eigentlich Bestimmungen von, hm, wie soll ich das jetzt nennen, vielleicht "alltäglichen" Daten? Zum Beispiel stehen Aktienkurse doch jeden Tag in der Zeitung und auf jeder x-beliebigen Seite - das selbe gilt auch für Ergebnisse von Sportveranstaltungen (Fußball oder Tennis ect.) oder Buchmacherquoten (OK, hier ist es dann schon angebracht, die Genehmigung einzuholen, imo). Darf man die (anderen) so ohne weiteres weitergeben?

Thema: [gelöst] Texte aus Image lesen
Am im Forum: Grafik und Sound

OK, ich habe es gelöst. Dass es so einfach ist hätte ich nicht mal im Traum gedacht. Für alle die mal bei diesem Thread landen, hier ist eine sehr gute Einführung.

http://www.codeproject.com/cs/algorithms/UnicodeOCR.asp

.. und dann kann man total einfach auf die Pixel im Bild zugreifen, einfacher geht es nimmer ...

Bitmap bitmap = new Bitmap("C:/two3.bmp");
bitmap.GetPixel(j, i);

... von daher muss ich sagen, dass auch viele Capturings nix bringen, oder unsicher sind, z.B. dieses wäre total leicht zu "knacken" => https://www.moneybookers.com/app/login.pl ... naja, mir soll's egal sein.

Thema: [gelöst] Texte aus Image lesen
Am im Forum: Grafik und Sound

Hallo Kollegen,

also, erst mal eins vorneweg, nein, ich will keine Capturings knacken, ich glaube so viel Freizeit habe ich nicht, auch scheint es mir, abhängig von der Qualität des Capturings, eher ziemlich sicher, also eher gegen unmöglich zum umsetzen, und soll hier nicht mein Problem sein. Es gibt ja Programme, die z.B. aus einem Film die Texte der Untertitel extrahieren. Ich z.B. möchte von Livedaten (Aktienkurse, Fußballergebnisse, ect.), dargestellt mit Flash, einen Screenshot machen und die Texte lesen. Das ist zwar sicherlich sehr aufwendig, und für jede Flashdarstellung neu zu konfigurieren (Schriftgröße, Schriftart), aber wenn man erst mal für jede neue Konfiguration immer ein paar Buchstaben + Zahlen eingegeben hat (also die Bedeutung, dass ein Abbild von A -> der Buchstabe A ist), denke ich, dass dann das Programm sich selbst konfigurieren kann und letztlich auch diese Daten auslesen kann. Nur habe ich ein Problem. Wie oder wo fange ich damit an. Kann mir einer Seiten für den Einstieg nennen. Hat jemand damit Erfahrung gemacht. Ich weiss, es wird ziemlich aufwendig sein, aber ich will unbedingt dazu in der Lage sein. Also ich suche nix, wo die Buchstaben krumm oder verschieden groß mit Hintergrundpunkten (sog. Capturing) dargestellt werden, sondern ich kann davon ausgehen, dass pro Konfiguration die Buchstaben / Zahlen immer in der gleichen Größe auf der gleichen Linie, in der selben Schriftart dargestellt werden. Danke schon mal für etwaige Hilfestellungen.

Thema: Frage zu Screenshot
Am im Forum: Grafik und Sound

Hallo Kollegen,

ich erstelle gerade eine Anwendung, die sich viele Informationen (Quoten, Ergebnisse ect.) aus dem Internet beschafft. Hier können zu Spitzenzeiten 70-100 InternetExplorer-Objekte instanziert sein und laufen. Natürlich werden alle Fehler, also es kann nicht wie gewünscht navigiert werden, festgehalten, hier die ganze HTML-Datei. Da es ja eine Zeit lang dauert, bis man das Fehlverhalten von allen Websites herausgefunden, bzw. das finden von Fehlern wesentlich schneller geht mit zusätzlichen Screenshots, dachte ich mir, dass ich eben immer bei einem Fehler zusätzlich, neben dem HTML-File, ein Screenshot erstelle. Dies funktioniert auch wunderbar. Nur habe ich hier ein Problem, bezüglich der Sichtbarkeit des Fensters. Wenn ich das InternetExplorer Objekt auf Visible = false stelle, soll später ein Windows-Service sein und den MSIE will ich nicht sehen, dann bekomme ich immer ein schwarzes Bild. Komisch ist, dass wenn ich alle Objekte auf meinem zweiten Bildschirm aufrufe (und diesen ausschalte), die Bilder trotzdem vorhanden sind (bei Visible = true). In ferner Zukunft (wenn das Programm fertig ist), werde ich natürlich die Anwendung auf einem Server laufen lassen, hier möchte ich eigentlich überhaupt keinen Bildschirm anschliesen (nur mit Remote-Desktop). Jetzt die Frage, muss ich auf die Images verzichten, wenn auf dem Server eine Exception fliegt, oder gibt es da eine Möglichkeit, denn im Bild sind ja auch nur irgendwelche binären Daten gespeichert. Gegenwärtig mache ich das, wie wahrscheinlich die meisten, mit User32.dll und GDI32.dll.

Freue mich über Eure Antworten.

Thema: Mit mshtml Zugriff auf Pop-up
Am im Forum: Web-Technologien

OK, ich hole mir jetzt die Fenster wie oben beschrieben, klappt ganz gut .. .jetzt noch eine Frage, da ich total genervt bin, nach stundenlangem Suchen. Wie komme ich auf das Window-Objekt? Das kann doch nicht so schwer sein ... leider komme ich nur auf das Document-Object, ich brauche aber das Window-Object ... also, liebe Screenscrapper, bitte melden, wie macht ihr das, wie geht das. Es kann doch nicht sein, dass man locker an das Document rankommt, aber nicht an das dazugehörige Windows-Objekt. Wenn ich Frames habe, dann geht es natürlich easy ... aber hier ist die Ausgangslage nich ein Document, sondern ein Window-Objekt. Also, bitte erbarmt euch, und erlöst mich.

Thema: Mit mshtml Zugriff auf Pop-up
Am im Forum: Web-Technologien

Hallo,

OK, ich habe eine Lösung ...

 SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
      
foreach(SHDocVw.InternetExplorer ie in shellWindows) { ...

ist aber imo ziemlich unschön, da die Fenster ja definitiv miteinander verknüpft sind und ich hier ALLE durchiteriere ... ist dies der übliche Weg?

Thema: Mit mshtml Zugriff auf Pop-up
Am im Forum: Web-Technologien

Hallo "Kollegen",

nachdem ich nun ewig rumgesucht habe, probiere ich es abschließend hier. Ich navigiere mit dem SHDocVw.InternetExplorer-Element verschiedene Seiten ab. Nun gibt es eine Seite, die die Anwendung mit einem neuen Fenster verknüpft. Wie komme ich nun mittels mshtml auf das Popup-Fenster?

Der HTML-Code im Hauptfenster ist ein "stink" normaler Link

<A id=myaccountHref href="http://www.betfair.com/myaccount/account/MyAccount.do" target=_blank>My Account</A>

Ich habe keine Ahnung, wie ich das anstellen könnte. Kann mir vielleicht jemand helfen? Die Dokumentation ist diesbezüglich auch total spärlich bis nicht vorhanden, leider.

Gruß

Thema: Casting-Frage
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@herbivor,

Vielen Dank für die Iterators-Klasse. Bei mir ist immer eine Liste/Collection null, so dass ich es mit einem IEnumerable Objekt gelöst habe. Nichtsdestotrotz werde ich in Zukunft diese Klasse von Dir benutzen, die ist sehr hilfreich, besonders die Zählervariable CurrentIndex - geht mir immer tierisch auf den Geist, wenn man hier zusätzlich Zählervariable einbauen muss.
Nebenbei noch vielen Dank für die "Zusatzinfo" für das Schlüsselwort params. Ich bin noch nicht sehr lange in C# dabei, komme aus der Java-Welt, und habe das vermisst - naja, meine Kollegen meinten, sowas gibt es nicht in C# 8o

Vielen Dank nochmal

Thema: Casting-Frage
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo "Kollegen",

ich "steh' hier auf dem Schlauch" - vielleicht kann mir jemand helfen .. ist zwar nicht "überlebenswichtig", doch würde mich das schon interessieren. Ausgangspunkt ist, dass ich eine Collection habe und eine IListe und möchte die auf "eins" casten, wie mache ich das (vorausgesetzt es ist möglich) .. ich möchte nicht zweimal die gleiche Schleife schreiben.

1. Collection ist vom Typ IHTMLElementCollection (Inhalt IHTMLElement)
2. IList<IHTMLElement>

Gibt es irgendwie ein Basisobjekt (mit Enumerator), wo ich beide "zusammen-casten" kann?

Gruß und Danke schon mal für etwaige Antworten

Thema: Javascript mit ## embeded
Am im Forum: Web-Technologien

Hallo Kollegen,

ich dachte bis heute, dass ich JavaScript beherrsche, dem ist aber nicht so, deshalb meine Frage, denn ich habe folgendes gefunden.

<input type="button" onclick=\'navigateTo(## DataItem.getMember("id").get_value() ##)\' value="Click me" />

im HTML-Quellcode wohlgemerkt, also gerendert. Was bedeutet ##? .. warum funzzt das, wenn ich die Function aufrufe, bekomme ich im alert-Fenstser die id angezeigt, warum?

Function:
function navigateTo(customerId){
  alert("customerId: " + customerId);
}

irgendwie stehe ich hier auf der Leitung. Kann mir jemand helfen? Was passiert da im Hintergrund?

Thema: NAnt within VS2005
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo "Kollegen",

da ich jahrelang mit Java und Ant (in Eclipse) gearbeitet habe, möchte ich jetzt auch (N)Ant bei .NET-Projekten benutzen. Gibt es ein Tool für die Integration in Visual Studio 2005? Ich habe bisher nur den NAnt-Runner gefunden (leider nur für 1.1) und eine (externe) GUI (NAnt-GUI). Gibt es hier ein Plug-In. Immer auf die Konsole zu wechseln wäre mir ein bisschen zu blöde (aber wenn es sich nicht vermeiden lässt).

Danke schon mal für eure Antworten.

Thema: Zeitzone bei Datumsformatter
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

OK, vielen Dank erst mal, ich wollte nur auf Nummer sicher gehen, bin noch nicht so lang dabei in C#. Dann muss ich es wohl (leider) manuell (selbst) machen, ich dachte, dass man dies beim Startup oder in der Config einstellen kann.

Thema: Zeitzone bei Datumsformatter
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Kollegen,

zwei Fragen bezüglich Zeitzonen. Ich möchte bei meiner Anwendung jegliche Datumsangaben in UTC (oder von mir aus GMT, was ja (fast) das gleiche ist) dargestellt bekommen. Nun meine Fragen.

a) Kann man eine Applikation so konfigurieren, dass alle Datums- oder Zeitangaben in der konfigurierten Zeitzone stattfinden (ohne das Systemdatum zu ändern)?

b) Kann ich ein Datum mit dem Datumformatter nach UTC formatieren? z.B. HH:mm:ss,fff z zeigt mir an: 01:21:09,968 +02 .. ich möchte aber nicht +02, sondern 23:21:09,968 UTC oder so ähnlich, wie geht das (wenn überhaupt)?

Danke schon mal im voraus.

Thema: Hilfe bei Globalisierung, bzw. Resourcefiles
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@DaMoe80,

Danke, es hat geklappt, ich muss den voll qualifizierten Namen angeben, davor noch den Assemblynamen.

@Unikum,

ja, das habe ich gemacht, in der "Java-Welt" ist es fast genauso, nur der Dash "de-DE" ist ein Underscore "de_DE".

@All,

Ist dies jetzt die übliche Vorgehensweise? .. ist es wirklich so (umständlich), dass bei jeder Änderrung mit ResGen immer die Binärdatei generiert werden muss? Wie schaut es mit resx-Dateien aus? Wie macht ihr das mit der Internationalisierung?

OK, und noch eine letzte Frage. Gibt es keine Methode im ResourceManager für das Einsetzen von Platzhaltern? .. .wenn ich key = value nummer {0} in der Datei habe, muss ich da wirklich String.Format beutzen, um den Parameter reinzubekommen?

Danke schon mal für eure Antworten.

Thema: Hilfe bei Globalisierung, bzw. Resourcefiles
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Kollegen,

OK, was ich möchte ist, dass ich in einer Library-Anwendung die Möglichkeit habe, Fehler in Englisch und Deutsch darzustellen. Nun bin ich aus der "Java-Welt" gewöhnt, hier Propertyfiles zu erstellen und diese in den Classpath zu setzen, das war es. Meine Frage hier lautet, wie ist die Vorgehensweise bei C# (also in einer Console- oder Libraryanwendung). Ich habe gelesen, dass ich jede Textdatei (Key-Value-Pairs) mit ResGen explizit in eine *.resource-Datei konvertieren muss. Ist dies richtig? Wie schaut es mit den *.resx-Dateien aus. Was ist der Unterschied? OK, ich habe mit ResGen Resourcesfiles erstellt. Jetzt würde ich gerne mittels ...

//ResourceManager res = new ResourceManager("SiteNavigationErrors", Assembly.Load("Util"));
ResourceManager res = new ResourceManager("Util.SiteNavigationErrors", Assembly.GetExecutingAssembly());
//Thread.CurrentThread.CurrentCulture = new CultureInfo("de"); 
//Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de");
Console.WriteLine(res.GetString("ERR_001"));

... darauf zugreifen .. aber egal, welche Assembly ich lade, immer bekomme ich die Fehlermeldung:

Could not find any resources appropriate for the specified culture or the neutra
l culture. Make sure "Util.SiteNavigationErrors.resources" was correctly embedd
ed or linked into assembly "Util" at compile time, or that all the satellite ass
emblies required are loadable and fully signed.


Was muss ich hier noch machen? Das kann doch nicht so schwer sein. Die Resourcefiles sind doch embeded. Muss ich hier den voll-qualifizierten Pfad angeben?

OK, ich erkläre kurz mal die Zusammenhänge.

Ich habe Consolenanwendung (Accessor), welche auf KLasse in Libraryanwendung (Util) zugreift. In Util habe ich die Resourcefiles im Pfad "Web/Service/SiteNavigation". Wie kann ich darauf zugreifen. Danke schon mal für eure Antworten. Leider kann ich im Netz keine Antwort finden.

Gruß

Thema: AJAX + Kosten?
Am im Forum: Web-Technologien

Ja, dieses Toolkit (+ Extensions) gehört zum Paket ASP.NET AJAX 1.0 und kannste natürlich kostenlos verwenden.

Thema: AJAX + Kosten?
Am im Forum: Web-Technologien

Zitat
Original von Echo]6[
Hallo!

Ich wollte mich jetzt ein wenig mit AJAX beschäftigen und habe dazu noch eine Frage:

Kostet mich AJAX etwas und kann ich z.B. dieses AJAX Toolkit, sprich die Controls, ohne weiteres nutzen und müßte ich, falls ich das dann mal später verkaufen will, irgendwelche Lizenzgebühren für diese Controls bezahlen?

Gruß
Echo

1) AJAX kostet natürlich nix, ist eine Technologie
2) Was meinst Du mit diesem AJAX-Toolkit (es gibt viele, ASP.NET AJAX 1.0?)
3) Es gibt Toolkits, die nix kosten (z.B. ASP.NET AJAX 1.0), oder welche, die Drittanbieter verkaufen, die Du dann aber natürlich in Deinem Programm weiter geben kannst (an den Kunden), ggf. Lizenzbestimmungen beachten.

Thema: Automatisiert Webseiten aufrufen
Am im Forum: Web-Technologien

Ich bin da auch gerade drannen mir was zu überlegen. Werde es aber ganz sicher in Datenbanktabellen (gegenwärtig fünf) verwalten und nach dem Laden auf Objekte mappen und die Collection (die Schritte) dann "abnavigieren". So zumindest stelle ich mir das vor. Eine Änderrung der Webseite gibt es ja immer mal, aber nicht jeden Tag und hierzu sollte dann lediglich eine Anpassung in der Datenbank ausreichen. Wohl gemerkt spreche ich jetzt NICHT vom Auslesen der Daten, sondern "nur" zum Navigieren der Zielseite (z.B. die Aktion Password ändern -> Step 1 anmelden -> 2 Menueintrag wählen -> Untermenueintrag wählen -> 4. Eingaben durchführen und bestätigen -> HInweismeldung suchen, dass Passwort erfolgreich geändert wurde -> 6. abmelden). Wobei hier Step 1 und 6 natürlich widerum unabhängig sein müssen, da diese auch von anderen Aktionen verwendet werden. Das lesen der Daten werde ich höchstwahrscheinlich, je nach Typ, mit Implementierten Interfaces machen - hier wäre aber auch Scripting-Code sinnvoll, gibt es sowas überhaupt. Kann man C#-Code z.B. in eine XML-Datei schreiben und dann in einem Programm parsen und interpretieren? Naja, in ein paar Tagen sind wir schlauer und ich hoffe, dass sich hier noch ein paar Ideengeber melden.

Thema: Zugriff auf Frames über Webbrowser Control
Am im Forum: Web-Technologien

OK, für alle die es interessiert:

string url = "http://futbol24.com/f24_livenow/LiveNow.html";
Object o = null;
SHDocVw.InternetExplorer internetExplorer = new SHDocVw.InternetExplorerClass();
internetExplorer.Silent = true;
internetExplorer.Navigate(url, ref o, ref o, ref o, ref o);
bool ajax = false;

while(true) {
  if(internetExplorer.ReadyState != tagREADYSTATE.READYSTATE_LOADING && !ajax) {
    String html = ((IHTMLDocument2)internetExplorer.Document).body.innerHTML;
    ajax = html.IndexOf("style=\"DISPLAY: none\">Please wait !!!") != -1;

    if(ajax) {
      break;
    }
  }
  
  Thread.Sleep(50);
}

Gruß

Thema: Zugriff auf Frames über Webbrowser Control
Am im Forum: Web-Technologien

OK, neuer Tag, neues Wissen,

nun bin ich beim "Original" Internet Explorer gelandet.

SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorerClass();
IWebBrowserApp wb = (IWebBrowserApp)ie;
wb.Visible = true; // warum dies, wer weiss das???

Jetzt habe ich das Problem, dass das Fenster (wb.Visible = true) angezeigt werden muss, um den richtigen Quellcode zu sehen.

Was ist der richtige Quellcode:
Die Seite wird geladen, dann erscheint der Text "Moment, alle Ereignisse werden geladen" ... dann wird mittels AJAX die Ereignisse angezeigt.

Lasse ich visible auf true, dann bekomme ich die Ereignisse (aufgelöst über AJAX) im Quellcode angezeigt, natürlich öffnet sich vorher ein Browserfenster, stelle ich visible auf false, dann bekomme ich im Quelltext die Anzeige ohne AJAX, also der Text ""Moment, alle Ereignisse werden geladen". Was muss ich jetzt noch tun, wenn ich KEIN! Fenster angezeigt bekommen möchte, aber natürlich mir das dynamische HTML angezeigt bekommen lassen will. Danke schon mal für etwaige Antworten.

Thema: Zugriff auf Frames über Webbrowser Control
Am im Forum: Web-Technologien

Hallo Kollegen,

ihr seit nun meine letzte Chance ... ich flippe gleich aus X( ... jetzt habe ich ewig lange recheriert und habe es doch tatsächlich hinbekommen, dass ich den Inhalt eines Frames anzeigen kann (mittels axWebbrowser). Das waren aber alles nur Tests auf einer Formsanwendung (soz. zum anlernen). Jetzt wollte ich das ganze in einer Consolenanwendung probieren. Hier habe ich es einfach nicht geschafft, dieses Active Control zu verwenden. OK, dachte ich, dann nehmen wir halt den "normalen" Webbrowser. Rufe ich hier "normale" Seiten auf (ohne Frames), funzzt alles wunderbar. Rufe ich eine Seite mit Frames auf, dann komme ich nicht an das HTML. Das kann doch nicht sein, dass dieses Teil mit Frames nicht "fertig wird". Leider habe ich im Inet auch schon ein paar Einträge gefunden (auch hier), es scheint wirklich so zu sein, dass man hier keinen Zugriff drauf hat.

Egal was ich mache, z.B.

HtmlWindow docWindow = browser.Document.Window;
HtmlDocument frameDocument = docWindow.Frames[0].Document;
... es funnzt einfach nicht ... obwohl es das eigentlich "sollte" .. der body ist einfach null

Zwei Fragen:

a) als Alternative würde ich ja gerne den axWebbroser verwenden, nur wie binde ich den ein in eine ganz normale Consolenanwendung? Ich bekomme immer Fehlermeldung "System.Windows.Forms.AxHost+InvalidActiveXStateException", mit der ich nix anfangen kann.

b) kennt denn "rein zufällig" einer die Lösung, ich würde bis nach Oberbayern schreien ... also, wo sind die Screenscraping-Champs?

Danke schon mal für etwaige Antworten

Thema: Architektur von Web-Services bestehend aus mehreren Projekten
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

@egrath, @herbivore,

vielen Dank, jetzt klingelt es so langsam bei mir. Habe ja schon öfters von RPC, CORBA ect. gehört ... auch schon Jahre mit EJB gearbeitet, aber mich nicht näher darum gekümmert, da es einfach lieft, bzw. die Anwendungen stateless waren. Abschließend vielleicht dann doch noch eine Frage. Beide Technologien (Web Service oder Remoting) gehen ja "über die Leitung". Wie schaut dies mit der Performance aus? Mir scheint, dass der Vorschlag von egrath sehr gut ist (da ich auf jeden Fall auch ein plattformunabhängiges Web Service brauchen werde). Die Frage ist nun ob sich Remoting lohnt zu implementieren (aus Performancegründen), wenn ich lokal (oder im eigenen Netzwerk) auch auf den Service zugreifen möchte (mit C#). Verbraucht hier ein Webservice zu viele Resourcen? - oder würdet ihr gleich das Remoting weglassen und alles über Web Service machen? Stimmt doch eigentlich oder, dass beides über die Leitung läuft und somit in etwa von der Performance gleich sein sollten .. hm .. OK, wahrscheinlich ist Remoting von der Performance her schneller, da speziell für C# (.NET) entwickelt und ist dann doch schneller als Web Services. Könnt ihr mir hierzu noch kurz Statements geben - dafür wäre ich euch dankbar.

Gruß

Thema: Architektur von Web-Services bestehend aus mehreren Projekten
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat
Original von svenson
Ich verstehe einfach nicht, was du mit "Projekten" meinst, und warum die "runterfahren" wenn man andere hinzufügt (wo hinzufügt?).

Aber ich will mal versuchen zu beantworten, was ich verstanden hab.

1. Ja, man kann in jeder beliebigen Anwendung WebServices "hosten"
2. Das setzt .NET 3.0, Win XP SP2 bzw. Win2003 Server bzw. Vista vorraus.
3. Wenn das Programm nicht immer laufen soll, muss es entweder die Daten ständig z.B. aus einer DB laden oder sich aus dem Speicher bestücken, der natürlich geladen und gespeichert werden will. Insofern besteht da natürlich "Zwang". Wie soll es auch anders gehen?

Und wenn du eine Aufrufkette über mehrere Service hast, so ist es natürlich ein Problem, wenn ein Glied in der Kette nicht läuft. Entweder hälst du die Verfügbarkeit hoch, oder du musst - falls möglich - dir eine Offline-Funktionalität aufbauen. Das geht natürlich nicht bei allen Diensten (eher bei den wenigsten).

OK, ich erkläre es noch einmal kurz. Nehmen wir an, ich habe ein Library-Prjekt mit dem Namen A. Erstelle ich jetzt ein Projekt B (von mir aus Consoleanwendung) und füge diesem Projekt A hinzu (VS mit add existing project), dann wird immer beim Starten von B auch eine (neue!) Instanz von A geladen. Frage ist, wie komme ich auf eine laufende Instanz von A (die ich vorher, wie auch immer, gestartet habe)? Mit herunter fahren meinte ich, dass bei diesem Beispiel die Instanz von Projekt A "gekilled" wird, wenn ich Projekt B beende. Nehmen wir einmal an, ich schreibe ein Programm A, welches ich hochfahre für wie schon gesagt 24 Stunden / 365 Tage. Jetzt soll es die Möglichkeit geben über andere (und mehrere!) Schnittstellen (Webservice, Windowsanwendung ect.) auf Programm A (oder besser auf die gestartete Instanz, oder noch besser, auf öffentliche noch nicht persistierte Daten der Instanz) zuzugreifen. Wie macht ihr das, wie löst man dies, ohne Zwischenpersistenz (Datenbank, XML) durchführen zu müssen? Geht das überhaupt? Wenn Programm A natürlich hin und wieder die Daten in die Datenbank "kloppt" oder in eine (oder mehrere XML-Files) schreibt, dann könnten so natürlich alle Schnittstellen "bedient" werden, jedoch möchte ich dies nicht, da es Änderrungen im Sekundenbereich geben kann, was dann die Anwendung langsam macht, bzw. die Aktuallität der Daten hinterherhinkt, wegen dem schreiben und lesen der Persistenzschicht. Natürlich persistiert Programm A auch hin und wieder Daten, aber es ist vorgesehen, die erst dann zu persistieren, wenn ein Ergebnis feststeht und sich bei einem Objekt nichts mehr ändert. Wie würdet Ihr das machen?

Thema: Architektur von Web-Services bestehend aus mehreren Projekten
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat
Original von svenson

Alles andere hab ich nicht verstanden. "Projekte" rufen sich auf und fahren runter... keine Ahnung was du meinst. Meinst du Services?

Ich kann also jeder Anwendung (z.B. Console- oder Windowsanwendung) einen Web-Service Server, nicht Client, hinzufügen?

Was ich meine ist folgendes. Nehmen wir mal an, ich programmiere ein Projekt (egal ob Console, Windowsanwendung ect.). Dieses Programm läuft nun 24 Stunden 365 Tage. Wie kann ich mit einem anderen Projekt auf dieses Programm zugreifen? Nehmen wir an, das Programm führt eine statische Collection mit aktuellen Ereignissen. Wie komme ich (von außen) an diese Liste ohne das Programm "zwingen zu müssen", die Liste immer wieder zu persistieren (Datenbank, XML-File ect.). Wie kann hier eine Kommunikation über Projekte hinweg stattfinden? Bedenke, dass das aufrufende Projekt u. U. nicht 24 Stunden/Tag läuft, so dass ein "simples" hinzufügen des Zielprojektes zur Folge hätte, dass das auch das Zielprojekt "runterfährt", wenn das aufrufene beendet wird. Wie kann ich das umgehen, oder besser gefragt, wie ist hier die Vorgehensweise? Wie würdet ihr das machen? Was meinst Du mit Service? Kann man diese mit anderen Projekten ansprechen?

Thema: Architektur von Web-Services bestehend aus mehreren Projekten
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Kollegen,

ich habe drei Fragen, wobei die letzten beiden die wichtigeren sind

1) Wenn ich einen Webservice erstellen möchte, MUSS! ich dies immer in einem VS-Webservice-Application-Projekt machen? ... oder kann ich auch einer Windows- oder Consolenanwendung einen Web Service hinzufügen. OK, ich will mich nur vergewissern, kann mir aber beim besten Willen nicht vorstellen, dass dies funktioniert. Warum eigentlich nicht, müsste doch nur im IIS ein virtuelles Verzeichnis einrichten?

2) Wie schaut eine Architektur aus, wenn ich ein STATEFUL-Projekt von mehreren anderen Programmen (z.B. Web-Service-Projekt und Console-Projekt) aufrufen möchte, brauche ich dann jeweils eine Instanz, also in diesem Beispiel zwei des STATEFUL-Projektes? Ich möchte keinen "persistenten Austausch", d.h. ich möchte nicht, dass das stateful Projekt dauernd die Daten "zwischenpersistiert" (Datenbank oder XML-File), da sich diese im Sekundentakt ändern können und daher die Anfragen wesentlich verlangsamen würde.

3) Wie können Projekte andere aufrufen, ohne dass das aufrufende Projekt herunterfährt, wenn ich das aufgerufene beende? Wie macht ihr das? Beispiel, wenn ich zu Projekt A noch B hinzufüge, dann fährt B erst dann hoch, wenn ich aus A, B aufrufe und B wird beendet, wenn ich A beende. Wie kann ich A aufrufen, und B ist schon hochgefahren, bzw. bleibt immer oben, bis ich es explizit kille oder mit einem Projekt C runterfahre?

Vielen Dank für eure Antworten, gerne auch "nur" Teile davon.