AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ShellExecute() - bei Rückkehr zum Ur-Fensterist die Reihenfolge in TaskBar verschoben
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute() - bei Rückkehr zum Ur-Fensterist die Reihenfolge in TaskBar verschoben

Ein Thema von JanWe · begonnen am 4. Nov 2015 · letzter Beitrag vom 29. Jul 2018
Antwort Antwort
Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
78 Beiträge
 
Delphi 7 Personal
 
#1

ShellExecute() - bei Rückkehr zum Ur-Fensterist die Reihenfolge in TaskBar verschoben

  Alt 4. Nov 2015, 22:31
[ Delphi 5, Win 7 ]

Hi,

ist für mich leider nicht so ganz einfach zu beschreiben, aber ich versuche es mal.
Ich schreibe gerade ein älteres Programm von mir nochmal vollkommen neu (from Scratch 8)
und den ShellExecuteBefehl verwende ich wie immer.

Delphi-Quellcode:
ProgPFAD := 'D:\npp\notepad++.exe';
Pfadname := 'E:\hello.cpp';
ShellExecute(0, 'open', pchar(ProgPFAD),
        PChar(AnsiQuotedStr(Pfadname, '"')),
        PChar(ExtractFileDir(Application.Exename)),
        SW_SHOW); // 29.01.2008 - 11.18-49
Doch in meiner neuen Version wird notepad zwar auch korrekt aufgerufen und angezeigt, allerdings , wenn ich npp (oder andere so aufgerufene Programme) wieder schließe, zeigt sich plötzlich nicht mehr MEIN PROGRAMM, sondern es sind 5 weitere Programme in der TaskSwitch nach oben und links gerutscht, sodaß ich erst 5x ALT + TAB drücken muß, um wieder zu meinem Programm zu kommen.
Das war früher nicht so. Da hatte ich einfach das "executete" Programm wieder geschlossen, und sofort hatte mein Programm wieder den Focus.

Hat jemand eine Idee, warum das sein kann?
Ich verwende immer noch Delphi5 und Windows 7. OK, klar MS-Updates sind eingespielt worden.

auf dem Screenshot, zeigt sich nach Execute normal mein Programm an Platz (2),
auf (1) ist das ausgeführte Programm in der TaskSwitch.

doch wie oben angesprochen befindet sich mein Programm jetzt OFT weiter hinten in der Reihenfolge auf (3)
Nicht immer, aber unregelmäßig manchmal.
Nur Warum?

Ich hoffe, ich konnte das einigermaßen verständlich beschreiben
und jemand hat eine Idee, warum das so ist.. wäre wirklich hilfreich - wegen der Ergonomie im Programmablauf.
Danke schon mal
Miniaturansicht angehängter Grafiken
pos2015-11-04_221159-.jpg  
Jan
Allen demnächst ein gutes 2023!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: ShellExecute() - bei Rückkehr zum Ur-Fensterist die Reihenfolge in TaskBar versch

  Alt 27. Jul 2016, 10:40
Falls das Problem noch besteht (zumindest tut es das noch laut deiner Signatur):

Du könntest im Code auf das Beenden von Notepad warten und danach dein eigenes Programm selbst in den Vordergrund setzen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: ShellExecute() - bei Rückkehr zum Ur-Fensterist die Reihenfolge in TaskBar versch

  Alt 29. Jul 2018, 00:07
Hiermit könnte es funktionieren:
Delphi-Quellcode:
procedure RunAndWait(const Executable, Parameter: string);
var
  tmpStartupInfo: TStartupInfo;
  tmpProcessInformation: TProcessInformation;
  tmpProcHandle: Cardinal;
begin
  FillChar(tmpStartupInfo, SizeOf(tmpStartupInfo), 0);
  with tmpStartupInfo do
  begin
    cb := SizeOf(TStartupInfo);
    wShowWindow := SW_SHOW;
  end;
  Application.Minimize;
  CreateProcess(PChar(Executable),PChar(Parameter),Nil,Nil,False,CREATE_NO_WINDOW,
    nil,nil,tmpStartupInfo,tmpProcessInformation);
  tmpProcHandle:= tmpProcessInformation.hProcess;
  WaitForSingleObject(tmpProcHandle, INFINITE);
  Application.Restore;
end;
und so Aufrufen RunAndWait('D:\npp\notepad++.exe','E:\hello.cpp'); @Admins, das Problem bestand immer noch (wegen 2015)
Gruß vom KodeZwerg

Geändert von TBx (30. Jul 2018 um 09:43 Uhr) Grund: Beitrag zur Reformierung erneut gepolstert
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz