Iternetlink öfnnen oder schließen
-
Dravere schrieb:
Belli schrieb:
Mit FindWindow finde ich erstmal den Explorer. Den Tab finde ich danach mit FindWindowEx.
Warum soll das ein falscher Weg sein?
Und was wäre Deiner Meinung nach der richtige Weg?Auch da will ich immer noch sehen, wie du das richtige Fenster findest! Wie findest du heraus, welches Control, bzw. Fenster, das richtige ist?
Na, ich guck mir mit Spy an, wie die Fensterklasse heißt, evtl. gibt es noch einen Fenstertext. So viele Tab Controls wird es als Childs unterhalb des MainWindows nicht geben.
Und für das, was der Threadersteller vorhat, ist das meiner Meinung nach der richtige Weg.
Ob es grundsätzlich richtig ist, die Problemstellung - die wir nicht kennen - so anzugehen, ist eine ganz andere Frage, da bin ich schon eher geneigt, Deiner Ansicht zu folgen. Mit meinem richtigen Weg meine ich lediglich, richtig im Sinne der Anforderung des Threaderstellers.
-
Belli schrieb:
Na, ich guck mir mit Spy an, wie die Fensterklasse heißt, evtl. gibt es noch einen Fenstertext. So viele Tab Controls wird es als Childs unterhalb des MainWindows nicht geben.
Es wird wahrscheinlich eine Tabklasse geben. Dann musst dich allerdings auf den Fenstertitel verlassen. Wenn nun aber zwei Fenster den gleichen Titel haben, was passiert dann? Ups ... sorry Anwender ... rofl
Es ist eine extrem schlechte Art und keine Lösung und das sollte man dem OP mitteilen. Das seine Anforderungen Unsinn sind und er besser das Problem genauer schildern sollte.
Grüssli
-
Dravere schrieb:
Belli schrieb:
Na, ich guck mir mit Spy an, wie die Fensterklasse heißt, evtl. gibt es noch einen Fenstertext. So viele Tab Controls wird es als Childs unterhalb des MainWindows nicht geben.
Es wird wahrscheinlich eine Tabklasse geben. Dann musst dich allerdings auf den Fenstertitel verlassen.
So wie ich das sehe, gibt es nur ein einziges TabControl als direktes Child des Mainwindow. Da kann mir der Fenstertitel völlig egal sein ...
Also ich denke nach wie vor, daß das kein (großes) Problem ist.
Wie gesagt, der Sinn ode Unsinn, das so zu machen, ist ein anderes Thema.
-
Belli schrieb:
Also ich denke nach wie vor, daß das kein (großes) Problem ist.
Zeig mal den Code her. Das will ich sehen! Behauptungen kann man lange aufstellen. Beweis es, dass es kein (grosses) Problem ist.
Die Aufgabe ist ganz einfach. Da ist ein Browser offen mit x Tabs. Schliesse automatisch einen Tab und zwar den richtigen, welcher vorher über ShellExecute geöffnet wurde.Man darf verwenden:
FindWindow, FindWindowEx, PostMessage/SendMessage, WM_CLOSE NachrichtViel Glück!
Grüssli
-
Dravere schrieb:
Belli schrieb:
Also ich denke nach wie vor, daß das kein (großes) Problem ist.
Zeig mal den Code her. Das will ich sehen! Behauptungen kann man lange aufstellen. Beweis es, dass es kein (grosses) Problem ist.
Bitte richtig lesen. Ich habe nix behauptet, ich habe gesagt, ich DENKE, daß es kein großes Problem ist.
Ich habe selbst noch kein TabControl eingesetzt, und müsste mich da jetzt erst einlesen, wofür ich weder die Zeit noch die Lust habe.Dravere schrieb:
Die Aufgabe ist ganz einfach. Da ist ein Browser offen mit x Tabs. Schliesse automatisch einen Tab und zwar den richtigen, welcher vorher über ShellExecute geöffnet wurde.
Man darf verwenden:
FindWindow, FindWindowEx, PostMessage/SendMessage, WM_CLOSE NachrichtIch würde den neuen Tab nicht mit ShellExecute öffnen, sondern versuchen, daß über die Message TCM_INSERTITEM zu erledigen. Die gibt mir den Index des neuen Tabs zurück, den ich später an TCM_DELETEITEM zum Löschen übergeben würde.
ShellExecute/WM_CLOSE sind sicher viel einfacher zu benutzen, aber nur hilfreich, wenn ich ein NEUE IExplorer-Instanz starten und wieder schließen will, was das ursprüngliche Anliegen des Threaderstellers war.
Noch einmal: Ich BEHAUPTE nicht, daß es so geht, aber ich denke schon, daß man das hinkriegen kann.
Zumindest kann man einiges versuchen, wenn man dieses Problem so wie vom Threadersteller gewünscht angehen möchte.
-
Morgen,
da sich immer noch gestritten wird was ich machen will....Also ich hab ein kleines Prog. mit dem verschiedene sachen berechne, wie zb ein Taschenrechner nur mit etwas größeren funktionen z.b fibonaci zahlen usw.
Im mom läuft das ganze auf einer konsole, soll später vll in eine form app gewandelt werden, aber erst mal so.Jetzt möchte ich während das Prog läuft, von dem prog aus eine Internetseite starten (das hab ich auch schon)
Dann will ich später diese Seite auch wieder schließen (ich will zb während mein prog läuft in einem Gästebuch nachschauen ob es einen neuen eintrag gibt)Wichtiger als das schließen dieser einzelnen Karte wäre mir das aktualisieren dieser seite ohne das diese dann in den Vordergrund springt.
Ich hoffe das ist jetzt eindeutig!
Gruß Jaepen
-
Hi
So, zum aktualisieren hab ich jetzt auch eine möglichkeit gefundenHWND explorer = FindWindow(NULL, L"top - Windows Internet Explorer"); if(explorer){ cout<<"gefunden"; PostMessage(explorer ,WM_KEYDOWN,VK_F5,0); PostMessage(explorer ,WM_KEYUP,VK_F5,0);diese funktioniert auch.
folgendes hab ich noch versucht
PostMessage(explorer,WM_COMMAND,MAKEWPARAM(41504,1) ,0);das hat nicht funktioniert. warum

wenn ich jetzt die erste möglichkeit verwende, und die .exe auf einem anderen rechner ausführe geht es auf einmal nicht mehr, da er den handle nicht findet.
Warum nicht ?
gruß
-
Wenn der User eh noch selbst nachgucken soll, dann musst du es doch auch nicht aktualisieren?
Ohne jetzt zu suchen:
FindWindow(NULL, L"top - Windows Internet Explorer");das scheint mit der Fenstertitel zu sein... Was so viel heißt, wie: wenn nen anderer Tab offen ist, als der, den du kennst, findest du das fenster nicht, weil der IE sich ganz anders nennt...bb
-
Jaepen schrieb:
(ich will zb während mein prog läuft in einem Gästebuch nachschauen ob es einen neuen eintrag gibt)
Die wichtigste Information überhaupt. Du willst nicht einen Link öffnen, sondern Inhalt runterladen und analysieren. Stichwort: Http Client in dein Programm einbauen.
Dazu wird oft die libcurl genommen: http://curl.haxx.se/
Die hat auch einen C++ Wrapper. Man kann sich aber ziemlich einfach auch selber was mit Sockets zusammenbauen. Für Sockets wäre Boost.Asio zu empfehlen.Falls du die Website selber programmierst, dann wäre es am besten, wenn du einen entsprechende URL anbietest, wo man einfach den Zählerstand abfragen kann. So muss man nicht mehr gross die HTML/XHTML/XML Website analysieren.
@Belli,
Wo ist der Unterschied zwischen denken und behaupten? Ist es möglich, dass du noch weniger Ahnung hast und dann einfach nur wild etwas hier reinschreibst? Eine super Hilfe bist du für ihn. Zudem hast du doch als erster das mit dem ShellExecute gebracht und jetzt weichst du bereits davon ab?
Aber naja, finde nur mal das IE-Fenster, welches ständig den Titel wechselt. Und was passiert, wenn der User die Tabs neu anordnet?
Du denkst dir das viel zu einfach!Grüssli
-
unskilled schrieb:
Ohne jetzt zu suchen:
FindWindow(NULL, L"top - Windows Internet Explorer");das scheint mit der Fenstertitel zu sein... Was so viel heißt, wie: wenn nen anderer Tab offen ist, als der, den du kennst, findest du das fenster nicht, weil der IE sich ganz anders nennt...bb
das ist richtig.
Ich öffne das fenster aber in einem neuen explorer, also weiß ich das es das oberste Fenster ist.
Auf meinem Rechner funktioniert das auch wunderbar, aber wenn ich die exe auf nen anderen rechner ziehe nicht (dort ist das Fenster auch als oberstes offen).kan das an windows (ich vista 64, anderer rechner xp prof) oder der version des IE liegen?
-
Dravere schrieb:
@Belli,
Wo ist der Unterschied zwischen denken und behaupten? Ist es möglich, dass du noch weniger Ahnung hast und dann einfach nur wild etwas hier reinschreibst?Scheiße, Du hast mich erwischt. Es stimmt leider, ich hab keine Ahnung und wollte mich nur ein bißchen wichtig machen.
Ich habe nicht damit gerechnet, daß ich durchschaut werde, schon gar nicht von Dir.
Der von Dir hinterfragte Unterschied ist der, daß ich nix behaupte, was ich nicht genau weiß, das hindert mich aber nicht daran, an eine Sache zu glauben, sprich: zu denken, daß es so funktioniert.Dravere schrieb:
Eine super Hilfe bist du für ihn. Zudem hast du doch als erster das mit dem ShellExecute gebracht und jetzt weichst du bereits davon ab?
Aber naja, finde nur mal das IE-Fenster, welches ständig den Titel wechselt. Und was passiert, wenn der User die Tabs neu anordnet?
Du denkst dir das viel zu einfach!Jo, ich habe versucht ihm zu helfen, während Deine Aussagen sich darauf beschränkt haben, zu sagen: Das ist der falsche Weg.
Als ich ShellExecute/CreateProcess gebracht habe, war die Anforderung noch, den Explorer zu starten und nicht einen neuen Tab aufzumachen.
Das Fenster finde ich ohne den Titel anhand der Fensterklasse, das habe ich Dir schon mal zu erklären versucht.
Wenn der User die Tabs neu anordnen wollte, dann wäre die ganze Anforderung unsinnig, laut Threadersteller soll der Explorer ja wohl von seiner Anwendung gesteuert werden - das geht selbstverständlich nur dann, wenn man nicht gleichzeitig selbst daran herumfummelt.
Ein Flugzeug fliegt auch entweder per Autopilot oder vom Flugkapitän gesteuert und nicht via Autopilot nach links und per manueller Steuerung nach rechts.
Aber: Bei neu Anlegen eines Tabs kann ich UserParameter mit angeben, so daß ich den Tab daran identifizieren könnte, auch dann, wenn ein Idiot wie Du die Tabs anders angeordnet hätte.
Mangels Ahnung werde ich mich nun aber aus diesem Thread zurückziehen, hab mich nun wichtig genug gemacht.
-
Entschuldigung, ich nehme den 'Idiot' zurück, ich habe mich nur etwas darüber geärgert, daß Du mich so unsachlich angerempelt hast.
Trotzdem ist dies jetzt mein letztes Posting in diesem Thread.Viel Erfolg allen andern Beteiligten.
-
Belli schrieb:
Der von Dir hinterfragte Unterschied ist der, daß ich nix behaupte, was ich nicht genau weiß, das hindert mich aber nicht daran, an eine Sache zu glauben, sprich: zu denken, daß es so funktioniert.
Es hindert dich niemand an eine Sache zu glauben. Nur ist es wenig hilfreich, wenn du jemand ein Glaube als Lösung verkaufen willst und es nicht mal selber probierst, um zu merken, dass dein Glaube wahrscheinlich ziemlich verkehrt ist.
Ich meine wir sind hier in einem Informatik Forum. Informatik gehört zum Bereich der Wissenschaften. Mir wäre neu, dass man in den Wissenschaften mit Glauben zu tun hat. Man hat mit Hypothesen und Beweisen zu tun. Beweise also deine Hypothese, sonst ist und bleibt sie nur eine Hypothese und bringt dem Hilfesuchenden nichts. Bring endlich FAKTEN!
Belli schrieb:
Jo, ich habe versucht ihm zu helfen, während Deine Aussagen sich darauf beschränkt haben, zu sagen: Das ist der falsche Weg.
Und das ist die beste Hilfe überhaupt. Es ist oft sehr viel hilfreicher, jemanden darauf hinzuweisen, dass er ein Problem über einen falschen Weg versucht zu lösen!
Jetzt wo ich seine tatsächliche Absicht kenne, konnte ich ihm auch einen besseren Weg nennen.Belli schrieb:
Das Fenster finde ich ohne den Titel anhand der Fensterklasse, das habe ich Dir schon mal zu erklären versucht.
Super, und wenn du zwei IEs offen hast? Dann hast du zweimal die gleiche Fensterklasse. Wer sagt, dass es nicht noch andere Programme mit der gleichen Fensterklasse gibt, welche offen sind? Ab dem Punkt, kannst du die Fenster über FindWindow nur noch über den Titel auseinander halten, was wie ich schon mal erklärte, so gut wie unmöglich ist.
Belli schrieb:
Wenn der User die Tabs neu anordnen wollte, dann wäre die ganze Anforderung unsinnig, laut Threadersteller soll der Explorer ja wohl von seiner Anwendung gesteuert werden - das geht selbstverständlich nur dann, wenn man nicht gleichzeitig selbst daran herumfummelt.
a) Ist ein externes Steuern eines Programmes schon eine unsinnge Anforderung, darauf sollte man erst gar nicht eingehen.
b) Was der User tut, dass kannst du ihm (LEIDER) nicht vorschreiben. Du kannst nur darauf reagieren und dementsprechend muss auch ein Programm geschrieben sein.Belli schrieb:
Ein Flugzeug fliegt auch entweder per Autopilot oder vom Flugkapitän gesteuert und nicht via Autopilot nach links und per manueller Steuerung nach rechts.
Du vergisst den Unterschied, das ein Pilot ausgebildet ist, ein Flugzeug zu fliegen. Ein Computer User hat meistens keine Ausbildung einen Computer zu benutzen. Auch hier wieder: LEIDER!
Belli schrieb:
Aber: Bei neu Anlegen eines Tabs kann ich UserParameter mit angeben, so daß ich den Tab daran identifizieren könnte, auch dann, wenn ein Idiot wie Du die Tabs anders angeordnet hätte.
Super, was passiert wenn der IE diese UserParameter überschreibt, weil er sie selber benötigt?
Aber wie gesagt, schon nur das IE Fenster alleine zu finden, ist ein Unterfangen für sich.Belli schrieb:
Mangels Ahnung werde ich mich nun aber aus diesem Thread zurückziehen, hab mich nun wichtig genug gemacht.
Das ist wohl besser ...
Grüssli
-
Hallo,
da ich nur ungern etwas doppelt schreibe, nur der Verweis auf:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1577010.html#1577010
MfG,
Probe-Nutzer