Jump to content

Turan Can

Members
  • Content Count

    50
  • Joined

  • Last visited

Everything posted by Turan Can

  1. Turan Can

    full screen view capture

    Hello everyone, Full screenshot. How do I capture the entire screen? In this example, I can take a screenshot of the open form. Sample; function MakeScaleScreenshot(Sender: TObject): TBitmap; var fScreenScale: Single; function GetScreenScale: Single; var ScreenService: IFMXScreenService; begin Result := 1; if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin Result := ScreenService.GetScreenScale; end; end; begin fScreenScale := GetScreenScale; Result := TBitmap.Create(Round(TfmText1(Sender).Width * fScreenScale), Round(TfmText1(Sender).Height * fScreenScale)); Result.Clear(0); if Result.Canvas.BeginScene then try TfmText1(Sender).PaintTo(Result.Canvas); // Sender.PaintTo( Result.Canvas); //, RectF(0, 0, Result.Width, Result.Height)); finally Result.Canvas.EndScene; end; end; procedure TfmText1.btnScreenClick(Sender: TObject); var B: TBitmap; begin B := MakeScaleScreenshot(Self); // MakeScreenshot(Image1); Image1.Bitmap.Assign(B); B.DisposeOf; end;
  2. Hi All, The foreground program works fine. However, when I open another program, it becomes disabled after a short while. What do we need to do to keep the background work going? I tried a thing or two but it didn't work. This feature exists but I couldn't find Delphide ..? "Use <android.permission.FOREGROUND_SERVICE permission: name =" " Uses Permissions - RAD Studio (embarcadero.com)
  3. Turan Can

    full screen view capture

    The problem is solved. I convert from the Java example. Thanks. It only receives the form you send. Please check the picture above.
  4. Turan Can

    Is there codec for FMX, Android Bitmap ?

    Hi All, FMX Project. "TBitmapCodecManager" doesn't support bitmap on Android? These are the only ones that come when I enter this "TBitmapCodecManager.SaveToStream(" method. POSIX jpg, tif, png WINDOWS jpg, tif, png, bmp ... for Descriptor in FBitmapCodecClassDescriptors do if (SameText(Extension, Descriptor.Extension, loUserLocale) or SameText('.' + Extension, Descriptor.Extension, loUserLocale)) and Descriptor.CanSave then -------------------------------------------------------------------- uses FMX.Graphics, FMX.Surfaces; var Stream: TMemoryStream; Surf: TBitmapSurface; begin Stream := TMemoryStream.Create; try Surf := TBitmapSurface.Create; try Surf.Assign(FBmpNew); //TBitmapCodecManager.RegisterBitmapCodecClass('.bmp', 'bmp', True, ......??? TBitmapCodecManager.SaveToStream(Stream, Surf, '.bmp'); finally Surf.Free; end; Stream.Position := 0; Stream.SaveToStream(FStream); finally Stream.Free; end;
  5. Turan Can

    Is there codec for FMX, Android Bitmap ?

    Remy, Thanks for the explanatory information.
  6. Turan Can

    full screen view capture

    Limelect, There is no code language issue for me. I am reviewing what you sent. Thanks a lot for the information. There are several api used in the code you sent, I'll review them.
  7. Turan Can

    full screen view capture

    Hi limelect, As I share in the picture, can it get the top bar and bottom bar showing clock and battery?
  8. Turan Can

    full screen view capture

    In the Java example, it did not capture the entire screen, but took a screenshot of the form it was attached to. so it is no different from the sample code I made. I think I need to take a screenshot with a handle from a plugin or api. but I could not find any examples android. Delphi, Java, C# xamarin I could not find an example of a full screenshot for android in these 3 languages. 1- Java sample 2- java sample
  9. Turan Can

    TrayIcon resfresh method

    Hi All, What to do to reload the tray icon? I haven't tried 3 different methods, is there any different idea? The icon is inactive because my application started late. If I do this, the problem will be fixed. However, this is frustrating at every opening. taskkill /f /im explorer.exe start explorer.exe The methods I tried. ie4uinit.exe -ClearIconCache ie4uinit.exe -show CD /d %userprofile%\AppData\Local DEL IconCache.db /a EXIT https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shchangenotify SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, nil); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); https://superuser.com/questions/499078/refresh-icon-cache-without-rebooting https://github.com/crazy-max/IconsRefresh
  10. Turan Can

    TrayIcon resfresh method

    Lars, Thanks for information I will investigate a little more. Because I only have problems with renewal refresh explorer icon cache. I hope I will find a method ­čÖé https://docs.microsoft.com/en-us/windows/uwp/launch-resume/launch-settings-app ms-settings:taskbar "explorer shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}" Shell execute list https://winaero.com/blog/clsid-guid-shell-list-windows-10/
  11. Turan Can

    TrayIcon resfresh method

    Hallo David, Ik heb een simpel probleem. This method you sent has worked. https://stackoverflow.com/questions/7877435/set-tray-icon-to-always-show I added the software to the trayicon section without the need for Windows settings. I have to do this for the icon to appear. Turn "Explorer.exe" on / off. Opening and closing the "Explorer.exe" file bothers the user. How can I renew "Explorer.exe" without closing / opening it?
  12. Make this setting for your previous version project. If this doesn't solve your problem, you should take advantage of "SetProcessDPIAware" api.
  13. Hi, Audio Transfer AEC ECHO cancellation. Vois Peer to peer, I did the sound transfer, but when the sound is turned on both sides, it starts mixing after a certain time. This is because the microphone listens to the sound coming from the speaker. An expert friend who can write paid, clean code is required. The echo is created due to the reflow of the incoming sound during mutual voice communication. To prevent this, I need the AEC eco function. As seen in the pictures below, this is my problem. I need a cleaner like the one below. Delphi Sample: InEchoClean(microphone, speaker, out.... bla bla Auxiliary documents are available in the links below. MSDN: https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/aec-system-filter https://github.com/RuudErmers/DelphiASIOVST-64-bit-Examples-2018/tree/master/DelphiASIOVST-v1.4 http://www.voip-sip-sdk.com/p_373-how-to-implement-voip-acoustic-echo-cancellation-voip.html http://startrinity.com/OpenSource/Aec/AecVadNoiseSuppressionLibrary.aspx https://github.com/xiph/speexdsp/tree/master/libspeexdsp
  14. Turan Can

    borderless with aero shadow

    procedure TfmBar1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin OnBaseMove(Button, Self.Handle); end; procedure TfmBar1.FormPaint(Sender: TObject); begin OnBasePaint(ClientWidth, ClientHeight, Canvas); end; procedure TfmBar1.FormShow(Sender: TObject); begin FClSys.OnMenuEvent := MenuEvent; BorderStyle := bsNone; end; procedure TfmBar1.OnBaseMove(Button: TMouseButton; Handle: HWND); begin if Button = mbLeft then begin ReleaseCapture; SendMessage(Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0); end; end; procedure TfmBar1.OnBasePaint(ClientWidth, ClientHeight: Integer; Canvas: TCanvas); var Rect: TRect; begin Rect.Left := 0; Rect.Top := 0; Rect.Bottom := ClientHeight; Rect.Right := ClientWidth; with Canvas do begin Pen.Width := 1; Brush.Color := $00000000; Pen.Color := $006B6B6B; Rectangle(0, 0, ClientWidth, ClientHeight); end; end;
  15. Hi All, My only problem is AEC. I couldn't find much information. I'm dealing with voice transfer, I did everything. I have a problem. As the two sides begin to speak, voices begin to mingle. As I understand it, it echoes. Is there a code example that clears it? Or "AEC Echo Cancellation" in a sdk. may be in paid product.
  16. Turan Can

    borderless with aero shadow

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private procedure CreateFlatRoundRgn; procedure CreateParams(var Params: TCreateParams); override; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure ExcludeRectRgn(var Rgn: HRGN; LeftRect, TopRect, RightRect, BottomRect: Integer); var RgnEx: HRGN; begin RgnEx := CreateRectRgn(LeftRect, TopRect, RightRect, BottomRect); CombineRgn(Rgn, Rgn, RgnEx, RGN_OR); DeleteObject(RgnEx); end; procedure TForm1.CreateFlatRoundRgn; const CORNER_SIZE = 6; var Rgn: HRGN; begin with BoundsRect do begin Rgn := CreateRoundRectRgn(0, 0, Right - Left + 1, Bottom - Top + 1, CORNER_SIZE, CORNER_SIZE); // exclude left-bottom corner ExcludeRectRgn(Rgn, 0, Bottom - Top - CORNER_SIZE div 4, CORNER_SIZE div 4, Bottom - Top + 1); // exclude right-bottom corner ExcludeRectRgn(Rgn, Right - Left - CORNER_SIZE div 4, Bottom - Top - CORNER_SIZE div 4, Right - Left , Bottom - Top); end; // the operating system owns the region, delete the Rgn only SetWindowRgn fails if SetWindowRgn(Handle, Rgn, True) = 0 then DeleteObject(Rgn); end; procedure TForm1.CreateParams(var Params: TCreateParams); const CS_DROPSHADOW = $00020000; begin inherited CreateParams(Params); with Params do begin Style := WS_POPUP; WindowClass.Style := WindowClass.Style or CS_DROPSHADOW; end; end; procedure TForm1.FormCreate(Sender: TObject); begin //BorderStyle := bsNone; CreateFlatRoundRgn; end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin ReleaseCapture; SendMessage(Self.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0); end; end; end.
  17. Turan Can

    Voice Audio Transfer AEC ECHO cancellation

    Windows VCL
  18. Turan Can

    borderless with aero shadow

    if IsActive then SystemParametersInfo(SPI_SETDROPSHADOW, 0, nil, 0); else begin SystemParametersInfo(SPI_SETDROPSHADOW, 0, PChar(''), 0); end;
  19. Hi All, I want it to stay fixed on the Taskbar. A code sample is required to remain fixed.
  20. Turan Can

    Win 10 Systray Icon taskbar, keeping it permanent

    I guess I will not find sample code. I gave freelancer as a job.
  21. Turan Can

    Threading question

    If you are using the above management, "" you don't need it. remove. Application.ProcessMessages; unit Sequence; interface uses System.Classes, Winapi.Messages; type TOnSequenceEvent = procedure(Text: string) of object; type TSequence = class(TThread) private FHandle: THandle; FOnSequenceEvent: TOnSequenceEvent; procedure SequenceEvent(Text: string); public constructor Create; overload; destructor Destroy; override; published property OnSequenceEvent: TOnSequenceEvent read FOnSequenceEvent write FOnSequenceEvent; end; implementation { TSequence } constructor TSequence.Create; begin inherited Create; end; destructor TSequence.Destroy; begin inherited; end; procedure TSequence.SequenceEvent(Text: string); begin if Assigned(FOnSequenceEvent) then FOnSequenceEvent(Text); end; end.
  22. Turan Can

    Threading question

    You probably get an authorization message from both. I recommend you to close it one by one and try it. LogWrite´╗┐(stat, true, true);´╗┐´╗┐´╗┐ FrmMain.memStatus.Lines.Add(stat); 1, First, the "log writer" write error might be returning. authorization may have changed. HDD or SSD permisssion ...! LogWrite´╗┐(stat, true, true); 2, If the problem is here. New Windows updates have controls for "thread" access. FrmMain.memStatus.Lines.Add(stat); 2, I suggest you look at the create line in "thread". constructor TSequence´╗┐.Create; begin inherited Create; FHandle := AllocateHWnd(WndProc); end; I recommend changing the code by giving a few minutes. As I understand you are posting a message from the "thread" to the forum. unit Sequence; interface uses System.Classes, Winapi.Messages; type TOnSequenceEvent = procedure(Text: string) of object; type TSequence = class(TThread) private FHandle: THandle; FOnSequenceEvent: TOnSequenceEvent; procedure WndProc(var Message: TMessage); procedure SequenceEvent(Text: string); public constructor Create; overload; destructor Destroy; override; published property OnSequenceEvent: TOnSequenceEvent read FOnSequenceEvent write FOnSequenceEvent; protected procedure Execute; override; end; implementation { TSequence } constructor TSequence.Create; begin inherited Create; FHandle := AllocateHWnd(WndProc); end; destructor TSequence.Destroy; begin if FHandle > 0 Then DeallocateHWnd(FHandle); inherited; end; procedure TSequence.WndProc(var Message: TMessage); begin try Dispatch(Message); except if Assigned(ApplicationHandleException) then ApplicationHandleException(Self); end; end; procedure TSequence.SequenceEvent(Text: string); begin if Assigned(FOnSequenceEvent) then FOnSequenceEvent(Text); end; procedure TSequence.Execute; begin { Place thread code here } end; end.
  23. Turan Can

    Win 10 Systray Icon taskbar, keeping it permanent

    All, Thank you very much for your answers. I want the app to be active. Not in dropdown menu. I want to fix it to stand next to voice or wifi. I want to activate the taskbar automatically. Sherlock, in the picture you sent; Stormversorgung Ein or On enabled sample : SendMessage(hwd, blaa blaa ... Shellnotify .. I need a sample code.
  24. Turan Can

    IPV6 to number

    Hi All, I want to convert IPV6 to digital number. I need to make "IP2Location" IPV4 and IPV6 database query. I need help with this. I added a working example for IPV4. The biggest problem here is that the integer value is a certain number. Since IPV6 is longer than numbers, even string is sufficient. function GetIPNumberIPV4(ip: string): integer; var List: TStringList; A, B, C, D, E, F: integer; //Biginteger...? total: string; begin Result := 0; if ip = '::1' then ip := '127.0.0.1'; List := TStringList.Create; try List.Delimiter := '.'; List.StrictDelimiter := True; List.DelimitedText := ip; A := strtoint(List[0]); B := strtoint(List[1]); C := strtoint(List[2]); D := strtoint(List[3]); ////Result := (A shl 40) + (B shl 32) + (C shl 24) + (D shl 16) + (E shl 8) + F; // BIG INTEGER PROBLEMS.. Result := (A shl 24) + (B shl 16) + (C shl 8) + D; finally List.Free; end; end; IPV4 and IPV6 An example of a code that works correctly, but in c #, :( private void button1_Click(object sender, EventArgs e) { //string strIP = "64.233.191.255"; string strIP = "2404:6800:4001:805::1006"; System.Net.IPAddress address; System.Numerics.BigInteger ipnum; if (System.Net.IPAddress.TryParse(strIP, out address)) { byte[] addrBytes = address.GetAddressBytes(); if (System.BitConverter.IsLittleEndian) { System.Collections.Generic.List<byte> byteList = new System.Collections.Generic.List<byte>(addrBytes); byteList.Reverse(); addrBytes = byteList.ToArray(); } if (addrBytes.Length > 8) { //IPv6 ipnum = System.BitConverter.ToUInt64(addrBytes, 8); ipnum <<= 64; ipnum += System.BitConverter.ToUInt64(addrBytes, 0); } else { //IPv4 ipnum = System.BitConverter.ToUInt32(addrBytes, 0); } } }
  25. Turan Can

    IPV6 to number

    Thank you very much for your support. I did this, but bigint didn't work for me. I'll check again.
├Ś