Quantcast
Channel: SCN : Document List - ABAP Development
Viewing all articles
Browse latest Browse all 935

How to Call DLL Functions Inside ABAP

$
0
0

Hello community,

 

a long time ago I presented here a possibility how to call DLL functions from a library of the presentation server inside ABAP.

 

Not so long ago I presented here the possibility how to use Windows PowerShell inside ABAP.

 

Here now a symbiosis, how to call DLL functions via PowerShell inside ABAP:


"-Begin-----------------------------------------------------------------

  Program zCallDLL.

 

    "-TypePools---------------------------------------------------------
      Type-Pools OLE2 .

 

    "-Constants---------------------------------------------------------
      Constants CrLf(2) Type c Value %_CR_LF.
      Constants OUTPUT_CONSOLE Type i Value 0.
      Constants OUTPUT_WINDOW Type i Value 1.
      Constants OUTPUT_BUFFER Type i Value 2.

 

    "-Variables---------------------------------------------------------
      Data PS Type OLE2_OBJECT.
      Data Result Type i Value 0.
      Data strResult Type String Value ''.
      Data tabResult Type Table Of String.
      Data PSCode Type String Value ''.

 

    "-Macros------------------------------------------------------------
      Define _.
        Concatenate PSCode &1 CrLf Into PSCode.
      End-Of-Definition.

 

    "-Main--------------------------------------------------------------
      Create Object PS 'SAPIEN.ActiveXPoSH'.

      If sy-subrc = 0 And PS-Handle <> 0 And PS-Type = 'OLE2'.

 

        Call Method Of PS 'Init' = Result Exporting #1 = 0.

        If Result = 0.

 

          Call Method Of PS 'IsPowerShellInstalled' = Result.

          If Result <> 0.

            Set Property Of PS 'OutputMode' = OUTPUT_BUFFER.

 

_ '$sig = @"'.
_ '[DllImport("User32.dll")]'.
_ 'public static extern int MessageBoxA(int hWnd, String Text, String Caption, int Type);'.
_ '"@;'.
_ '$DLL_User32 = Add-Type PBexpMsgBox -MemberDefinition $sig -PassThru'.
_ '$DLL_User32::MessageBoxA(0, "Hello World", "From WinAPI", 0);'.

 

            Call Method Of PS 'Execute' Exporting
              #1 = PSCode.

 

            Call Method Of PS 'OutputString' = strResult.

 

            Split strResult At cl_abap_char_utilities=>cr_lf
              Into Table tabResult.

            Loop At tabResult Into strResult.
              Write: / strResult.
            EndLoop.

 

          EndIf.

 

        EndIf.

 

        Free Object PS.

 

      EndIf.

"-End-------------------------------------------------------------------

 

The example above shows the using of a WinAPI call.

 

Good DLL calling.

 

Cheers

Stefan



Viewing all articles
Browse latest Browse all 935

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>