-
Content Count
1198 -
Joined
-
Last visited
-
Days Won
16
Everything posted by FPiette
-
I don't know. I have written only one application which make use TEdgeBrowser. It's part of an automation process which runs every single day without any glitch. In that application, TEdgeBrowser is simply dropped on the VCL form. I don't even use OnCreateWebViewCompleted event.
-
You must convert this code to hexadecimal => 80070578 Then search Google for this code and edge browser. The code 80070578 means: "invalid window handle".
-
Run as admin on unauthorized Windows username
FPiette replied to Mustafa E. Korkmaz's topic in Windows API
I the next step your app *has* the administrator privileges. Just run the external process as any user using only CreateProcess(). -
Run as admin on unauthorized Windows username
FPiette replied to Mustafa E. Korkmaz's topic in Windows API
I have this code which could help you : {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Author: François PIETTE @ OverByte Creation: July 22, 2021 Description: Classes to act (File access or other) using another user account. License: This program is published under MOZILLA PUBLIC LICENSE V2.0; you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.mozilla.org/en-US/MPL/2.0/ Version: 1.0 History: Jul 22, 2021 1.00 F. Piette Initial release * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} unit ImpersonateUser; interface uses Winapi.Windows, System.Classes, System.SysUtils; const LOGON32_LOGON_NEW_CREDENTIALS = 9; // Missing in Delphi 10.4.2 type TImpersonateUser = class(TComponent) protected FUserToken : THandle; FErrorCode : DWORD; public destructor Destroy; override; function Logon(const UserName : String; const Domain : String; const Password : String) : Boolean; procedure Logoff(); property ErrorCode : DWORD read FErrorCode; end; implementation { TImpersonateUser } destructor TImpersonateUser.Destroy; begin if FUserToken <> 0 then begin CloseHandle(FUserToken); FUserToken := 0; end; inherited Destroy; end; procedure TImpersonateUser.Logoff; begin if FUserToken <> 0 then begin RevertToSelf(); // Revert to our user CloseHandle(FUserToken); FUserToken := 0; end; end; function TImpersonateUser.Logon( const UserName : String; const Domain : String; const Password : String): Boolean; var LoggedOn : Boolean; begin Result := FALSE; if FUserToken <> 0 then Logoff(); if UserName = '' then begin // Must at least provide a user name FErrorCode := ERROR_BAD_ARGUMENTS; Exit; end; if Domain <> '' then LoggedOn := LogonUser(PChar(UserName), PChar(Domain), PChar(Password), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, FUserToken) else LoggedOn := LogonUser(PChar(UserName), PChar(Domain), PChar(Password), LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, FUserToken); if not LoggedOn then begin FErrorCode := GetLastError(); Exit; end; if not ImpersonateLoggedOnUser(FUserToken) then begin FErrorCode := GetLastError(); Exit; end; FErrorCode := ERROR_SUCCESS; Result := TRUE; end; end. Once your code has called Logon(), it act a the user specified by the credentials. When finished, call Logoff(). -
I never got that warning. Does it occurs each time you run the IDE?
-
Which version ? This could also be a component you've installed.
-
You can use the remote debugger. And as other said, using madExcept is an excellent choice. You'll also have a stack trace. I use madExcept a lot!
-
Is it possible for you to run the application under Delphi debugger? If you do, the debugger will show you the exact location of the exception and a stack trace. Those are the best information to understand where and why the exception occurs.
-
Open a new discussion with a correct the question. And add as many details as possible from your code. Without details, we cannot help much. I also suggest you create a minimal reproducible sample program which demonstrate the bad behavior you see in your actual code.
-
Have a look at the sample OverbyteIcsConHttp.dpr in ICS distribution.
-
Check If File is what he claim to be
FPiette replied to mazluta's topic in RTL and Delphi Object Pascal
The write such a function, your have to open the file and check his content to see if is what the file extension pretend. Each file has a specific internal file format, usually in a header. You have to look at the specification for each file format and write code to do more or less serious checks. There is a website which could help you : https://docs.fileformat.com/ -
I have this code: procedure TScreenDumpForm.ScreenDump( const FileName : String); var Stream : TFileStream; c : TCanvas; r1 : TRect; r2 : TRect; b : TBitmap; j : TJPEGImage; begin c := TCanvas.Create; b := TBitmap.Create; j := TJPEGImage.Create; Stream := TFileStream.Create(FileName, fmCreate); try c.Handle := GetWindowDC(GetDesktopWindow); try r1 := Screen.MonitorFromWindow(Handle).BoundsRect; r2.Top := 0; r2.Left := 0; r2.Width := r1.Width; r2.Height := r1.Height; b.Width := r1.Width; b.Height := r1.Height; b.PixelFormat := pf24bit; b.Canvas.CopyRect(r2, c, r1); j.CompressionQuality := 60; j.Assign(b); j.SaveToStream(Stream); finally ReleaseDC(0, c.Handle); c.Free; b.Free; j.Free; end; finally Stream.Free; end; end;
-
After that happens, is the application start working again without restarting it or one it happens no other connection is accepted. If no other connection is accepted, it could be that the listen socket has been closed unexpectedly. This could happens by a bug elsewhere leading to a CloseSocket or even plain winapi CloseHandle function is called with the socket handle.
-
Access violations in OverbyteIcsHttpRestTst
FPiette replied to omnibrain's topic in ICS - Internet Component Suite
You are not using a debug version of the application because there is missing details in the stack trace. Make sure you rebuild all, including the components.the debugger should show the excat line where the exception occurs. -
Access violations in OverbyteIcsHttpRestTst
FPiette replied to omnibrain's topic in ICS - Internet Component Suite
Please build using debug configuration and run with the debugger. Then when the debugger hit the exception, copy the call stack and the code around the error, and paste it here. -
Guidance on FreeAndNil for Delphi noob
FPiette replied to Paul Dardeau's topic in RTL and Delphi Object Pascal
You can keep this code. It is equivalent to FreeAndNil(FMyObject). Do whatever you feel most readable for you. -
Guidance on FreeAndNil for Delphi noob
FPiette replied to Paul Dardeau's topic in RTL and Delphi Object Pascal
I always use FreeAndNil, even if it is the last line of a method. Why? Because my code evolve, I can copy/paste it somewhere, add line,... If the object variable (Actually a pointer btw) is nullified, I'm sure I'll get and exception if I forgot I can no more use that object reference. The impact on performance is nearly null. But all rules can be ignored sometimes... -
Since the internal error is in OverbyteIcsWinsock.pas, I suggest you build the simplest console project using the file and produce the internal error. The project doesn't have to do real things. Since URW1111 is an internal error, compiling is enough. Then remove (comment out) code chunks in OverbyteIcsWinsock.pas until the error disappears. Then reduce the size of the offending chunk until you find the line causing the error. This is for sure a long process... Report the offending line here.
-
What do we win?
-
In HL7, end of segment is single CR (#13). Set TWSocket LineEnd to single #13.
-
I have used TWSocket for hospital application (HL7 V2.3) and never had any issue. You should turn line mode on and use CR as line end. The as it is ASCII, use ReceiveStr to get the lines one at a time into a string.
-
Wordpress upload media
FPiette replied to George Bairaktaris's topic in ICS - Internet Component Suite
I don't understand why you can fix the code in your initial post. Just mimic the working code you shown. If you don't understand who to do that, ask SPECIFIC questions. I won't write the code for you (I don't have access to the website you use for testing). -
Wordpress upload media
FPiette replied to George Bairaktaris's topic in ICS - Internet Component Suite
That code and the ICS code you wrote do not send the same parameters! ContentType is not the same. ContentDisposition is not the same. Accept is not the same. AcceptEncoding is not the same. With ICS, you restrict SSL cypher to sslCliSecTls13Only , no restriction specified in the other side. Data posted must be in form-data format. And maybe other differences for unspecified properties. François Piette -
Problem at execution time in OverbyteIcsHttpProt
FPiette replied to Passama's topic in ICS - Internet Component Suite
Not sure I understand what you mean. But for sure, you must remove any old components from the IDE and install the new one each time you change ICS (Or any other component) version. -
You write way to long posts! If you like so much Unix shell, use Cygwin under Windows: it has it all.