Tampilkan postingan dengan label API. Tampilkan semua postingan
Tampilkan postingan dengan label API. Tampilkan semua postingan

Selasa, 14 April 2015

Membatasi Aplikasi yang Running hanya satu

Berikut ini adalah tips untuk membatasi user dalam menjalankan aplikasi, Hal ini guna mencegah agar user hanya menjalankan aplikasi cuma satu saja.

Berikut step by stepnya :

  • Klik "NEW
  • Pilih Tab "Pb Object" kemudian pilih "CUSTOM CLASS"
Custom Class
  • Set Properties AutoInstantiate menjadi TRUE

  • Deklarasikan  Win32 API modul pada  UserObject  -> Local External Functions
Function Long GetLastError () Library 'kernel32.dll'
Function ULong CreateMutex (ULong lpsa, Boolean fInitialOwner, String lpszMutexName) Library 'kernel32.dll' Alias for CreateMutexA
  • Buat UserObject Function seperti dibawah ini :

String ls_name
If Handle(GetApplication()) > 0 Then
   ls_name = GetApplication().AppName + Char(0)
   CreateMutex(0, True, ls_name)
   If GetLastError() = 183 Then Return True
End If
Return False
  • Simpan user object yang dibuat dengan nama uo_limitrun (sebagai contoh)
  • Untuk mengunakan object tersebut, copy script dibawah ini pada event open pada form aplikasi.

uo_limitrun lou_limitrun
If lou_limitrun.uf_isrunning() Then
  MessageBox ('Warning', 'Application is already running', StopSign!)
  HALT CLOSE
End If
//...
// Your next line code
//...

Sabtu, 20 Maret 2010

Cara mendapatkan Nomor Serial DISK


Pertama, Buat definisi dari fungsi API di global external function:

Function Boolean GetVolumeInformationA( &
ref String ls_Rootpath, &
ref String ls_volumnename, &
Ulong lul_VolumeNameSize, ref Ulong lul_VolumeSerialNumber, &
ref Ulong lul_MaximumComponentLength, &
ref Ulong lul_FileSystemFlags, &
ref String ls_FileSystemNameBuffer, &
Ulong lul_FileSystemNameSize &
) Library "Kernel32.dll"
 

Kedua, Buat script pemanggil dibawah ini

String ls_Rootpath, ls_volumnename
ls_Rootpath = "C:" // tentukan untuk mendapatkan nomor seri hard drive
ls_volumnename = Space(256) // mengalokasikan cukup ruang, yang sama di bawah ini
 
Ulong lul_VolumeNameSize
lul_VolumeNameSize = 256
Ulong lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags
lul_MaximumComponentLength = 256
String ls_FileSystemNameBuffer
ls_FileSystemNameBuffer = space(256)
Ulong lul_FileSystemNameSize
lul_FileSystemNameSize = 256

boolean lb_rtn
lb_rtn = False

lb_rtn = GetVolumeInformationA(ls_Rootpath, ls_volumnename, lul_VolumeNameSize, &
lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags, &
ls_FileSystemNameBuffer, lul_FileSystemNameSize)

if lb_rtn = false then
 MessageBox("Alert", "fungsi panggil gagal!")
 return
end if
sle_1.text = String(lul_VolumeSerialNumber) // / / mendapatkan nomor seri harddisk



// Sumber :http://blog.zjxu.edu.cn/zyc/readblog.asp?blogid=12&id=22

Selasa, 02 Maret 2010

Powerbuilder Windows API

Arc()
Fungsi ini digunakan untuk menggambar lingkaran

Global External Function:
FUNCTION boolean Arc(ulong hwnd, long r1, long r2, long r3, long r4, long a1, long a2, long a3, long a4) LIBRARY "Gdi32.dll"

Script:
Boolean rtn
ulong l_handle, l_device
long lv[8]
l_handle = handle(w_main) // 'w_main' is the name of the sample window.
l_device = GetDC(l_handle)
lv[ ] = {10,40,300,220,0,0,180,0}
rtn = Arc(l_device, lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8])
-----------------------------------------------------------------------------------
Beep()
Fungsi ini untuk suara, seperti beep pada PB

Global External Function:
FUNCTION boolean Beep(long freq,long dur) LIBRARY "Kernel32.dll"

Script:
Boolean rtn
Long ll_freq, ll_dur
ll_freq = 500
ll_dur = 20
rtn = Beep(ll_freq, ll_dur)
------------------------------------------------------------------------------------
BringWindowToTop( )
Sebuah perintah agar window selalu berada didepan seperti perintah :[window].bringtotop = true

Global External Function:
FUNCTION boolean BringWindowToTop(ulong w_handle) LIBRARY "User32.dll"

Script:
Boolean rtn
ulong l_handle
l_handle = handle(w_win2)
rtn = BringWindowToTop(l_handle)
------------------------------------------------------------------------------------
Chord( )
Sebuah Chord adalah daerah yang dibatasi oleh perpotongan sebuah elips dan garis segmen. Fungsi ini menggambar suatu chord berdasarkan koordinat dari function.

Global External Function:
FUNCTION boolean Chord(ulong hwnd,long x1,long y1,long x2,long y2,long r1, long r2, long r3, long r4) LIBRARY "Gdi32.dll"

Script:
boolean rtn
ulong l_handle, l_device
long lv[8]
l_handle = handle(w_main)
l_device = GetDC(l_handle)

/*Hal ini dapat dilakukan dalam satu baris seperti: l_device = GetDC(handle(w_main))*/

lv[ ] = {5,5,200,200,0,0,200,300}
rtn = Chord(l_device, lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8])

CloseHandle( )
Fungsi ini digunakan untuk menangani objek yang terbuka, seperti Destroy pada PB saat

Global External Function:
FUNCTION boolean CloseHandle(ulong w_handle) LIBRARY "Kernel32.dll"

Script:
boolean rtn
ulong l_handle
string ls_wname
Lihat Blog
ls_wname = ""
l_handle = A(0, ls_wname) // Usually you would already have the handle.
rtn = CloseHandle(l_handle)
------------------------------------------------------------------------------------
CloseWindow( )
Fungsi CloseWindow meminimalkan Window yang ditargetkan.Yang paling dekat adalah setara PowerBuilder WindowState , tapi ini terbatas hanya window PB. Sintaks di PowerBuilder adalah sebagai berikut: . WindowState =Minimized!

Global External Function:
FUNCTION boolean CloseWindow(ulong w_handle) LIBRARY "User32.dll"

Script:
boolean rtn
ulong l_handle
string ls_wname
ls_wname = ""
l_handle = FindWindowA(0, ls_wname) // Be sure to use the exact title of the window you are targeting.
rtn = CloseWindow(l_handle)
------------------------------------------------------------------------------------
CopyFileA( )
Fungsi ini salinan sebuah file dengan mengambil nama-nama sumber dan tujuan sebagai string dengan referensi.

Global External Function:
FUNCTION boolean CopyFileA(ref string cfrom, ref string cto, boolean flag) LIBRARY "Kernel32.dll"

Script:
string l_from, l_to
boolean l_flag, rtn
l_flag = false
l_from = "c:\pwrs\pb5i32\ex\code\beach.bmp"
l_to = "c:\test.bmp"
rtn = CopyFileA(l_from, l_to, l_flag)
MessageBox("CopyFile", string(rtn))
------------------------------------------------------------------------------------
CreateDirectoryA( )

Jumat, 26 Februari 2010

Cara mendapatkan DBMS, User database melalui ODBC

/*Buat external function*/
FUNCTION integer SQLGetInfo (long hconn, integer infotype, ref string infotypeptr, integer bufferlength, ref integer bufferlengthptr) LIBRARY "odbc32.dll"

/*Buat script*/
string ls_dbms, ls_database, ls_user
integer li_length

CONSTANT integer SQL_DBMS_NAME = 17
CONSTANT integer SQL_DATABASE_NAME = 16
CONSTANT integer SQL_USER_NAME = 47

long ll_dbhandle

ls_dbms = space(256)
ls_database = space(256)
ls_user = space(256)
ll_dbhandle = SQLCA.DbHandle()

SQLGetInfo(ll_dbhandle, SQL_DBMS_NAME, ls_dbms, 255, li_length)
SQLGetInfo(ll_dbhandle, SQL_DATABASE_NAME, ls_database, 255, li_length)
SQLGetInfo(ll_dbhandle, SQL_USER_NAME, ls_user, 255, li_length)

MessageBox("Current DBMS" , trim(ls_dbms))
MessageBox("Current DATABASE" , trim(ls_database))
MessageBox("Current USER" , trim(ls_user))

Menampilkan atau menyembunyikan Desktop dan Taskbar

Beberapa aplikasi mengharuskan pengguna tidak dapat mengakses taskbar atau desktop ketika menjalankan aplikasi kita. Kami akan memblokir akses ke taskbar atau desktop dengan memanggil Windows API.

//Deklarasikan 2 Function berikut :

Function long FindWindowExA ( long hWnd, long hWndChild, ref string lpszClassName, ref string lpszWindow) library "user32"
Function long ShowWindow (long hWnd, long nCmdShow ) library "user32"

//Tambahkan script berikut :

//Konstanta untuk ShowWindow()
Constant Long SW_HIDE = 0
Constant Long SW_NORMAL = 1
Constant Long SW_SHOWMINIMIZED = 2
Constant Long SW_SHOWMAXIMIZED = 3
Constant Long SW_SHOWNOACTIVATE = 4
Constant Long SW_SHOW = 5
Constant Long SW_MINIMIZE = 6
Constant Long SW_SHOWMINNOACTIVE = 7
Constant Long SW_SHOWNA = 8
Constant Long SW_RESTORE = 9
Constant Long SW_SHOWDEFAULT = 10
--------------------------------------------------------

//Mencari nama Windows Shell
String ls_ShellViewWnd = "Progman"
String ls_ShellTaskBarWnd = "Shell_TrayWnd"
String ls_Null

// Local
Long ll_HTaskBar, ll_HDeskTop

// Hide Taskbar
ll_HTaskBar = FindWindowExA( 0, 0, ls_ShellTaskBarWnd, ls_Null )
ShowWindow( ll_HTaskBar, SW_HIDE )

// Hide Desktop
ll_HDeskTop = FindWindowExA( 0, 0, ls_ShellViewWnd, ls_Null )
ShowWindow( ll_HDeskTop, SW_HIDE )

// Tunda untuk memulihkan
MessageBox( 'Pause', 'Lihat Perbedaannya !' )

// Show Taskbar
ll_HTaskBar = FindWindowExA( 0, 0, ls_ShellTaskBarWnd, ls_Null )
ShowWindow( ll_HTaskBar, SW_SHOW )

// Show Desktop
ll_HDeskTop = FindWindowExA( 0, 0, ls_ShellViewWnd, ls_Null )
ShowWindow( ll_HDeskTop, SW_SHOW )

Tambahkan event Timer kontrol standar

Apakah Anda tahu bahwa Anda dapat menambahkan Event Timer PowerBuilder kontrol visual?

Pertama memetakan sebuah event Timer event pbm_Timer.
Kemudian tambahkan panggilan API berikut:

Function Long SetTimer(Long hwnd, Long IdTimer, Long uTimeOut, Long tmpre) Library "user32.dll"
Function Long KillTimer(Long hwnd, Long IdEvent) Library "user32.dll"

Untuk mengontrol, gunakan perintah berikut bukan Timer ().

SetTimer(Handle(the_control), 1, 500, 0) // 500 adalah jumlah milidetik, atau setiap setengah detik
KillTimer (Handle(the_control), 1) / / Untuk Timer.