convert pdf to tiff programmatically c# : Secure pdf SDK application API wpf html winforms sharepoint microsoft_visual_basic_black_book82-part965

Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
Click Here!
ITKnowledge
home
account 
info
subscribe
login
search
My 
ITKnowledge
FAQ/help
site 
map
contact us
Brief
Full
Advanced
Search
Search Tips 
To access the contents, click the chapter and section titles. 
Visual Basic 6 Black Book 
(Publisher: The Coriolis Group) 
Author(s): Steven Holzner 
ISBN: 1576102831 
Publication Date: 08/01/98 
Bookmark It
Search this book:
Previous
Table of Contents
Next
Now we can call PlaySound directly when the user clicks a command button, Command1 ; here, we pass it a 
value of &H20000 to indicate that we’re reading the sound from a file and ignore the function’s return value this 
way:
Private Sub Command1_Click()
retVal = PlaySound("c:\windows\media\Tada.wav", 0&, &H20000)
End Sub
And that’s it—now we’re playing sounds with a Windows API function. 
Allocating Memory And Storing Data
One reason programmers use Windows API calls is to work with a lot of memory, and you can use the 
GlobalAlloc (allocate memory), GlobalLock (lock the memory and get a pointer to it), GlobalUnlock (unlock the 
memory), and GlobalFree (deallocate the memory) functions for that. We’ll take a look at the first two of these 
functions in this topic, and the last two in the following topic. We’ll also see how to copy data into and out of our 
newly allocated memory with the MoveMemory function.
Here’s how you use GlobalAlloc to allocate memory; this function returns a non-zero handle to the memory if 
successful:
Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal
dwBytes As Long) As Long
You set the flags you want to use in wFlags, and the number of memory bytes you want in dwBytes. Here are the 
possible flags to use with GlobalAlloc:
  GMEM_FIXED—&H0 
  GMEM_MOVEABLE—&H2 
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/804-806.html (1 of 4) [7/31/2001 9:04:07 AM]
Go!
Keyword
Please Select
Go!
Secure pdf - C# PDF Digital Signature Library: add, remove, update PDF digital signatures in C#.net, ASP.NET, MVC, WPF
Help to Improve the Security of Your PDF File by Adding Digital Signatures
pdf security password; pdf security
Secure pdf - VB.NET PDF Digital Signature Library: add, remove, update PDF digital signatures in vb.net, ASP.NET, MVC, WPF
Guide VB.NET Programmers to Improve the Security of Your PDF File by Adding Digital Signatures
pdf unlock; copy locked pdf
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
  GMEM_NOCOMPACT—&H10 
  GMEM_NODISCARD—&H20 
  GMEM_ZEROINIT—&H40 
  GMEM_MODIFY—&H80 
  GMEM_DISCARDABLE—&H100 
  GMEM_NOT_BANKED—&H1000 
  GMEM_SHARE—&H2000 
  GMEM_DDESHARE—&H2000 
  GMEM_NOTIFY—&H4000 
  GMEM_LOWER—GMEM_NOT_BANKED 
  GMEM_VALID_FLAGS—&H7F72 
  GMEM_INVALID_HANDLE—&H8000 
To get a pointer to the memory and so put it to use, you use GlobalLock, passing it the memory handle you got 
from GlobalAlloc. GlobalLock returns a non-zero pointer to the memory if successful:
Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Besides GlobalAlloc and GlobalLock, you can move data into the memory you’ve allocated with MoveMemory:
Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal         dest As _
Any, ByVal    src As Any, ByVal    length As Long)
Here are what the arguments to MoveMemory mean:
  dest—Pointer to the destination buffer 
  src—Pointer to the source buffer 
  length—Number of bytes to move 
Let’s see an example. Here, we’ll store a string of text that the user types into a text box in memory; in the next 
topic in this chapter, we’ll read that string back. This example will give us a good general overview of working 
with memory and memory buffers. 
We start by setting up a 40-character-long buffer for the string to store in the form’s (General) declarations section:
Const DataLength = 40
Dim outbuffer As String * DataLength
...
We also declare the memory handle and pointer we’ll use: 
Const DataLength = 40
Dim outbuffer As String * DataLength
Dim hMemory As Long
Dim hMemoryPointer As Long
...
Finally, we declare the functions we’ll use, GlobalAlloc, GlobalLock, and MoveMemory, as well as the memory 
flag we’ll use, GMEM_MOVEABLE, which means that Windows can move the memory we are using if it needs 
to as part of its memory-handling operations:
Const DataLength = 40
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/804-806.html (2 of 4) [7/31/2001 9:04:07 AM]
Online Remove password from protected PDF file
can receive the unlocked PDF by simply clicking download and you are good to go! Web Security. When you upload a file it is transmitted using a secure connection
can print pdf security; convert locked pdf to word doc
Online Change your PDF file Permission Settings
can receive the locked PDF by simply clicking download and you are good to go!. Web Security. When you upload a file it is transmitted using a secure connection
pdf password encryption; add security to pdf file
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
Dim outbuffer As String * DataLength
Dim hMemory As Long
Dim hMemoryPointer As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As_
Long, ByVal dwBytes As Long) As Long
rivate Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) _
As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _
(ByVal dest As Any, ByVal src As Any, ByVal length As Long)
Const GMEM_MOVEABLE = &H2
When the user clicks a command button, Command1, we will allocate and lock the memory, and store the text 
string now in Text1 in it. We start by storing the text from the text box in the buffer we’ve named outbuffer:
Private Sub Command1_Click()
outbuffer = Text1.Text
...
Next, we use GlobalAlloc to allocate the memory we’ll use:
Private Sub Command1_Click()
outbuffer = Text1.Text
hMemory = GlobalAlloc(GMEM_MOVEABLE, DataLength)
...
Next, we pass the memory handle from GlobalAlloc to GlobalLock to get a pointer to the memory we’ve 
allocated:
Private Sub Command1_Click()
outbuffer = Text1.Text
hMemory = GlobalAlloc(GMEM_MOVEABLE, DataLength)
hMemoryPointer = GlobalLock(hMemory)
...
Finally, we copy the data from our buffer to our newly allocated memory with MoveMemory (note that because 
MoveMemory is a subroutine, we use the Call keyword instead of assigning a return value to a variable):
Private Sub Command1_Click()
outbuffer = Text1.Text
hMemory = GlobalAlloc(GMEM_MOVEABLE, DataLength)
hMemoryPointer = GlobalLock(hMemory)
Call MoveMemory(hMemoryPointer, outbuffer, DataLength)
End Sub
And that’s it—when the user clicks Command1, we copy the text string to our allocated memory. 
We’ve stored data in allocated memory now—how do we read it back? We’ll take a look at that in the next topic.
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/804-806.html (3 of 4) [7/31/2001 9:04:07 AM]
C# PDF Library SDK to view, edit, convert, process PDF file for C#
XDoc.PDF SDK provides users secure methods to protect PDF document. C# users can set password to PDF and set PDF file permissions to protect PDF document.
change security settings pdf; secure pdf remove
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
C#.NET: Edit PDF Password in ASP.NET. RaterEdge HTML5 PDF Editor also provides C#.NET users secure solutions for PDF document protection.
copy text from encrypted pdf; can print pdf security
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
Reading Data From Memory And Deallocating Memory
In the previous topic, we stored a text string from a text box, Text1, in memory when the user clicked a button, 
Command1. In this topic, we’ll read the string back when the user clicks another button, Command2, and display 
that string in a new text box, Text2. We’ll also free and deallocate the memory we’ve used.
We’ll use MoveMemory to read the data from memory:
Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal          dest As _
Any, ByVal    src As Any, ByVal     length As Long)
Previous
Table of Contents
Next
Products |  
Contact Us |  
About Us |  
Privacy  |  
Ad Info  |  
Home 
Use of this site is subject to certain 
Terms & Conditions
Copyright © 1996-2000 EarthWeb Inc.
All rights reserved. Reproduction whole or in part in any form or medium without express written 
permission of 
EarthWeb is prohibited.
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/804-806.html (4 of 4) [7/31/2001 9:04:07 AM]
C# Create PDF Library SDK to convert PDF from other file formats
& thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry-standard PDF document file.
decrypt pdf without password; decrypt a pdf file online
PDF Image Viewer| What is PDF
information; Royalty-free to develop PDF compatible software; Open standard for more secure, dependable electronic information exchange.
pdf security settings; create pdf security
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
Click Here!
ITKnowledge
home
account 
info
subscribe
login
search
My 
ITKnowledge
FAQ/help
site 
map
contact us
Brief
Full
Advanced
Search
Search Tips 
To access the contents, click the chapter and section titles. 
Visual Basic 6 Black Book 
(Publisher: The Coriolis Group) 
Author(s): Steven Holzner 
ISBN: 1576102831 
Publication Date: 08/01/98 
Bookmark It
Search this book:
Previous
Table of Contents
Next
Here are what the arguments to MoveMemory mean:
  dest—Pointer to the destination buffer 
  src—Pointer to the source buffer 
  length—Number of bytes to move 
To allocate memory, we used GlobalAlloc to get a handle to a memory area; to use that memory, we used 
GlobalLock to get a pointer to the memory area. To unlock memory, you pass a pointer to that memory to 
GlobalUnlock:
Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
To free memory, you pass a memory handle to GlobalFree:
Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Let’s see this at work. Here, we add the declarations of the functions we’ll use to the program we developed in the 
previous topic, as well as a buffer, inbuffer, to store the data we read:
Const DataLength = 40
Const GMEM_MOVEABLE = &H2
Dim outbuffer As String * DataLength
Dim inbuffer As String * DataLength
Dim memHandle As Long
Dim memPointer As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long,_
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/806-812.html (1 of 4) [7/31/2001 9:04:09 AM]
Go!
Keyword
Please Select
Go!
C# PowerPoint - PowerPoint Creating in C#.NET
SDK for .NET, is a robust & thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry
change pdf security settings; add security to pdf in reader
C# Word - Word Creating in C#.NET
Word SDK for .NET, is a robust & thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry
decrypt pdf password; create secure pdf
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) _
As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" 
(ByVal dest As Any, ByVal src As Any, ByVal length As Long)
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) _
As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) _
As Long
Then, when the user clicks Command2, we can use the memory pointer we created in the program in the previous 
topic, hMemoryPointer, with MoveMemory, to copy the string to the buffer:
Private Sub Command2_Click()
Call MoveMemory(inbuffer, hMemoryPointer, DataLength)
...
Now we can move the string to Text2 from inbuffer:
Private Sub Command2_Click()
Call MoveMemory(inbuffer, hMemoryPointer, DataLength)
Text2.Text = inbuffer
...
Finally, we unlock and free the memory we’ve used: 
Private Sub Command2_Click()
Call MoveMemory(inbuffer, hMemoryPointer, DataLength)
Text2.Text = inbuffer
GlobalUnlock (hMemoryPointer)
GlobalFree (hMemory)
End Sub
That’s it—when you run the program, as shown in Figure 23.10, and click the Store Text In Memory button, the 
text in the top text box, Text1, is stored in memory. When you click the Read Text From Memory button, the 
string is read back and displayed in the bottom text box, Text2, as you see in Figure 23.10. Now we’re using 
memory with the Windows API.
Figure 23.10  Storing and reading memory data.
The code for this example is located in the winmemory folder on this book’s accompanying CD-ROM. 
Making A Window Topmost
You can use SetWindowPos to make a window “topmost,” which means it’ll always stay on top of other 
windows:
Function SetWindowPos Lib "user32" (ByVal       hwnd As Long, ByVal _
hWndInsertAfter As Long, ByVal    x As Long, ByVal    y As Long, ByVal _
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/806-812.html (2 of 4) [7/31/2001 9:04:09 AM]
C# Word - Word Create or Build in C#.NET
a robust & thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry Create Word From PDF.
change pdf document security; pdf security options
RasterEdge.com General FAQs for Products
not the product end user, please copy and email the secure download link are dedicated to provide powerful & profession imaging controls, PDF document, image
creating a secure pdf document; convert locked pdf to word
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
cx As Long, ByVal    cy As Long, ByVal    wFlags As Long) As Long
Here’s what the arguments to this function mean: 
  hwnd—Handle of the window to work with. 
  hWndInsertAfter—Handle to the window that will precede this window in the Z-order. This parameter 
can be a window handle set to one of the following values: HWND_BOTTOM  (= 1; places the window at 
the bottom of the Z-order), HWND_TOP (= 0; places the window at the top of the Z-order), 
HWND_TOPMOST (= –1; places the window above all non-topmost windows), or 
HWND_NOTOPMOST (= –2; repositions the window to the top of all non-topmost windows). 
  x—Specifies the new position of the left side of the window. 
  y—Specifies the new position of the top of the window. 
  cx—Specifies the new width of the window. 
  cy—Specifies the new height of the window. 
  wFlags—Specifies sizing and positioning options, as shown in Table 23.5. 
Table 23.5SetWindowPos flags. 
Constant 
Meaning 
SWP_DRAWFRAME (= &H20) 
Draws a frame (defined when the window was 
created) around the window. 
SWP_FRAMECHANGED (= &H20) 
Sends a WM_NCCALCSIZE message to the 
window, even if the window’s size is not being 
changed. If this flag is not specified, 
WM_NCCALCSIZE is sent only when the 
window’s size is being changed. 
SWP_HIDEWINDOW (=&H80) 
Hides the window. 
SWP_NOACTIVATE (= &H10) 
Does not activate the window. If this flag is not set, 
the window is activated and moved to the top of 
either the topmost or the non-topmost group 
(depending on the setting of the hWndInsertAfter 
parameter). 
SWP_NOCOPYBITS (= &H100) 
Discards the entire contents of the client area. If this 
flag is not specified, the valid contents of the client 
area are saved and copied back into the client area 
after the window is sized or repositioned. 
SWP_NOMOVE (= 2) 
Retains current position (ignores the x and y 
parameters). 
SWP_NOOWNERZORDER (= &H200) 
Does not change the owner window’s position in the 
Z-order. 
SWP_NOREDRAW (= 8) 
Does not redraw changes. If this flag is set, no 
repainting of any kind occurs. 
SWP_NOREPOSITION (= &H200) 
Same as SWP_NOOWNERZORDER. 
SWP_NOSIZE (= 1) 
Retains current size (ignores the cx and cy 
parameters). 
SWP_NOZORDER (= 4) 
Retains current ordering (ignores hWndInsertAfter). 
SWP_SHOWWINDOW (=&H40) 
Displays the window. 
Let’s see an example. Here, we’ll size a window to 100 x 100 pixels and make it a topmost window. We start by 
declaring SetWindowPos in our program, as well as the constants we’ll use, SWP_SHOWWINDOW, 
SWP_DRAWFRAME, and HWND_TOPMOST:
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long,
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/806-812.html (3 of 4) [7/31/2001 9:04:09 AM]
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const SWP_SHOWWINDOW = &H40
Const SWP_DRAWFRAME = &H20
Previous
Table of Contents
Next
Products |  
Contact Us |  
About Us |  
Privacy  |  
Ad Info  |  
Home 
Use of this site is subject to certain 
Terms & Conditions
Copyright © 1996-2000 EarthWeb Inc.
All rights reserved. Reproduction whole or in part in any form or medium without express written 
permission of 
EarthWeb is prohibited.
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/806-812.html (4 of 4) [7/31/2001 9:04:09 AM]
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
Click Here!
ITKnowledge
home
account 
info
subscribe
login
search
My 
ITKnowledge
FAQ/help
site 
map
contact us
Brief
Full
Advanced
Search
Search Tips 
To access the contents, click the chapter and section titles. 
Visual Basic 6 Black Book 
(Publisher: The Coriolis Group) 
Author(s): Steven Holzner 
ISBN: 1576102831 
Publication Date: 08/01/98 
Bookmark It
Search this book:
Previous
Table of Contents
Next
Now when the window loads, we can make the window topmost this way: 
Private Sub Form_Load()
retVal = SetWindowPos(Me.hwnd, HWND_TOPMOST, 100, 100, _
100, 100, SWP_DRAWFRAME Or SWP_SHOWWINDOW)
End Sub
That’s all it takes. Now the window will stay on top of other windows, as you see in Figure 23.11. Our topmost 
program is a success. 
Figure 23.11  Making a window topmost.
Determining Free And Total Disk Space
The Testing Department is calling again. Your program, SuperDuperDataCrunch, is overflowing users’ disks. 
Can’t you check how much disk space is available before writing out your 800MB database? Hmm, you think, 
how would that work?
You can use the GetDiskFreeSpace function to check how much space there is on a disk:
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias _
GetDiskFreeSpaceA (ByVal     lpRootPathName As String, _
lpSectorsPerCluster As Long,   lpBytesPerSector As Long, _
lpNumberOfFreeClusters As Long,       lpTotalNumberOfClusters As Long) _
As Long
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/812-816.html (1 of 4) [7/31/2001 9:04:10 AM]
Go!
Keyword
Please Select
Go!
Visual Basic 6 Black Book:Connecting To The Windows API And Visual C++
Here’s what this function’s arguments mean: 
  lpRootPathName—The disk you want to check (for example, “c:\”) 
  lpSectorsPerCluster—The number of sectors per cluster on the disk 
  lpBytesPerSector—The number of bytes per sector 
  lpNumberOfFreeClusters—The number of free clusters 
  lpTotalNumberOfClusters—The total number of clusters 
To find the total free space, you multiply SectorsPerCluster * BytesPerSector * NumberOfFreeClusters. To find 
the total space on the drive, you multiply SectorsPerCluster BytesPerSector * TotalNumberOfClusters.
Let’s see an example. Here, we’ll determine the free space on the c: drive. We start by declaring 
GetDiskFreeSpace:
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias _
"GetDiskFreeSpaceA" (ByVal lpRootPathName As String,_
lngSectorsPerCluster As Long, lngBytesPerSector As Long, _
lngNumberOfFreeClusters As Long, lngTotalNumberOfClusters As Long)_
As Long
Next, when the form loads, we fill the variables lngSectorsPerClusterlngBytesPerSector
lngNumberOfFreeClusters, and lngTotalNumberOfClusters with GetDiskFeeSpace for drive C:
Private Sub Form_Load()
Dim lngSectorsPerCluster As Long
Dim lngBytesPerSector As Long
Dim lngNumberOfFreeClusters As Long
Dim lngTotalNumberOfClusters As Long
retVal = GetDiskFreeSpace("c:\", lngSectorsPerCluster, _
lngBytesPerSector, lngNumberOfFreeClusters, lngTotalNumberOfClusters)
...
Finally, we can display the total number of free bytes in a label, Label1, this way:
Private Sub Form_Load()
Dim lngSectorsPerCluster As Long
Dim lngBytesPerSector As Long
Dim lngNumberOfFreeClusters As Long
Dim lngTotalNumberOfClusters As Long
retVal = GetDiskFreeSpace("c:\", lngSectorsPerCluster, _
lngBytesPerSector, lngNumberOfFreeClusters, _
lngTotalNumberOfClusters)
Label1.Caption = "Free space on drive c: " & _
Str(lngSectorsPerCluster * lngBytesPerSector * _
lngNumberOfFreeClusters) & " bytes"
End Sub
When you run the program, you’ll see the number of free bytes on the computer’s C: drive, something like the 
display in Figure 23.12. 
Figure 23.12  Determining free disk space.
file:///E|/Program%20Files/KaZaA/My%20Shared%...Basic%20-%20%20Black%20Book/ch23/812-816.html (2 of 4) [7/31/2001 9:04:10 AM]
Documents you may be interested
Documents you may be interested