TThread.Synchronize (TThread.CurrentThread,
Bist sicher? Nicht Nil!
Nur mal als sample
Delphi-Quellcode:
function TSessionThread.OnSessionCreated(NewSession: IAudioSessionControl): HResult;
begin
Result := S_FALSE;
if (MainThreadID <> GetCurrentThreadId) then
begin
TThread.Queue(nil,
procedure
var
bDuplicate: BOOL;
i: Integer;
begin
if Assigned(FOnAudioSessionCreate) then
begin
ASessionInfo := GetSessionInfo(NewSession);
if ASessionInfo.FileName <> '' then
begin
// Check to prevent duplicate registeration of audio session
bDuplicate := false;
for i := 0 to (FSessionCount - 1) do
if SessionInfo[i].PID = ASessionInfo.PID then
begin
// for the case of reuse of same PID (but different programs)
if SessionInfo[i].State <> AudioSessionStateExpired then
begin
bDuplicate := true;
Break;
end;
end;
if not bDuplicate then
begin
inc(FSessionCount);
SetLength(SessionInfo, FSessionCount);
SessionInfo[FSessionCount - 1] := ASessionInfo;
FOnAudioSessionCreate(NewSession, ASessionInfo, FSessionCount);
end;
end;
end;
end);
Result := S_OK;
end;
end;
Zitat:
Warum so kompliziert und nicht einfach die Icons in eine ImageList stecken.
Und du kennst alle Icons von Programmen die er auslesen will auch unbekannte die noch niemals auf seiner Platte waren also im Moment unbekannt sind?
Super na ja dann addiere die unbekannten mal zur Imagelist.
Ist doch einfach oder?
gruss