|
Sam Martini wrote: So, If I used Byref, (I am guessing here) The parameter inside the function header should have pointer/link to the calling variable
No, the pointer is not to a variable, but to a memory location. At runtime, variable names don't exist.
|
|
|
|
|
Hello Dave
Dave Kreskowiak wrote: At runtime, variable names don't exist.
Thanks, I got it now. although it still a bit fuzzy of how other language can do it.
"Understanding" is always hard part of being a programmer
|
|
|
|
|
... of how other language can do it:
1. Pre-processor = textual replacement in the code file before(!) compiling
2. Interpreted languages - reading your code...
...
Compiled to native processor instructions: No variable names, or logic depending on it ...
|
|
|
|
|
But if you were a C dinosaur, you could write
#define log(x) fprintf(stderr, "#x = %g\n", x);
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
which I used to do quite a lot.
the C pre-processor was a powerful tool, and at least one CP member is using it even on C# code!
|
|
|
|
|
Luc Pattyn wrote: which I used to do quite a lot.
So did I!
Luc Pattyn wrote: the C pre-processor wasIS a powerful tool
ftfy
Luc Pattyn wrote: at least one CP member is using it even on C# code!
Where's the :shudder: smiley when you need it?
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
You rang?
It's just a text processor; you can use it with pretty much any text file.
|
|
|
|
|
PIEBALDconsult wrote: It's just a text processor; you can use it with pretty much any text file.
I beg to differ.
IMO it only works rather well for you because C# and C/C++ are sufficiently related syntax-wise. The pre-processor has to understand where it should and shouldn't try and apply define and macro substitutions; it should not modify stuff inside comments and string literals, so it knows about /* and // comments, and it knows "abcd" and "ab\"cd" are untouchable. If (horresco referens) you feed it VB source code, you won't like the outcome.
|
|
|
|
|
Peter_in_2780 wrote: But if you were a C dinosaur
I am C egg dinasaur.
I know nothing about C, except it is very powerful and very very hard
|
|
|
|
|
|
I guess it is a common question with common answer as well
|
|
|
|
|
I have a Shockwave Flash Object (named webFlash) in my form. I'm trying to use StretchBlt to magnify the object. Ideally I would like to push a button and have it replace the Flash Object on my form with the magnified version.
Any help would be appreciated, even just documentation on how to use StrechBlt because I can't find anything on it. Thank you.
The code below I found browsing the web. It was originally for a mouse cursor, but I'm trying to adapt it.
Private Declare Function GetCursorPos Lib "user32" (ByRef lPointCoordinateoint As PointAPI) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lplWindowName As String) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Integer) As Integer
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal nSrcWidth As Integer, ByVal nSrcHeight As Integer, ByVal dwRop As Integer) As Integer
Private Declare Function GetDesktopWindow Lib "user32" () As Integer
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Integer, ByVal hdc As Integer) As Integer
Private Structure PointAPI
Dim X As Integer
Dim Y As Integer
End Structure
Dim PointCoordinate As PointAPI
Dim lWind As Integer
Dim lDesktop As Integer
Dim lButton As Integer
Private Sub Video_Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Video_Mag.Click
Dim lWind As Object
lWind = GetDesktopWindow()
lDesktop = GetDC(lWind)
lButton = GetDC(Me.Handle.ToInt32)
Timer.Enabled = True
End Sub
Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
GetCursorPos(PointCoordinate)
' ? > Origin X > Origin Y > Size X > Size Y > ? >
StretchBlt(lButton, _
webFlash.Location.X + webFlash.Width + 1, _
webFlash.Location.Y + webFlash.Height + 1, _
webFlash.Width, _
webFlash.Height, _
lDesktop, _
webFlash.Location.X + webFlash.Width, _
webFlash.Location.Y + webFlash.Height, _
124, 60, &HCC0020)
End Sub
|
|
|
|
|
hi
I am beginner in programming Visual Basic and i use the visual studio 2010 ultimate
Almost finished my simple program
__________________________________________
just two button's left was
How to make a button that will copy two files and put them somewhere else
I have the two files in the
C:\Program Files\Imust
One. Dll and the second. Exe
I want a button to copy the files and places them in
C:\WINDOWS\system32
How?
_________________________________________
and the other button
system.diagnostics.process.start (C:\Program Files\Imust\392.exe)
is there's anyway to run 392.exe without path ?
_________________________________________
is there any list of usefull code's ?
______________________________________
thank
|
|
|
|
|
mshome77 wrote: I am beginner in programming Visual Basic and i use the visual studio 2010 ultimate.
Is this normal to pay around 4 - 5k € as beginner?
Greetings
Covean
|
|
|
|
|
no it not normal
that's way there is free trail
|
|
|
|
|
mshome77 wrote: How to make a button that will copy two files
You need to spend some more time learning the language and how there is no direct relationship between a button and a copy action.
It's time for a new signature.
|
|
|
|
|
Arg so many things wrong here.
First of all under vista / windows 7 the c:\windows\system32 map is protected and your program shouldn't be trying to copy anything in there (least of all a dll and a exe)
Second as Richard said a button has no relation to a copy (there is no such thing as a copy button)
A button has a click event in which you write code (code that can then copy your files).
(for that look at the system.IO.File namespace)
Third, you should never use absolute path's in your program, either use predefined paths such as the users temp directory or use a setting file where you store these path's.
As a last let me give you some pointers as how to ask a question here.
Don't just ask for code, show us what you have done, tell us what the code is supposed to do and what it is actually doing.
If there are any errors post them (but you'll have to write code before you can get any errors of course)
|
|
|
|
|
see below
modified on Tuesday, August 24, 2010 1:37 PM
|
|
|
|
|
Tom Deketelaere wrote: First of all under vista / windows 7 the c:\windows\system32 map is protected and your program shouldn't be trying to copy anything in there (least of all a dll and a exe)
I'll second that... I'd go one step further and say no matter what OS, or version thereof, files should not be copied to the folder where system files reside. Just a bad practice IMHO.
|
|
|
|
|
Ok, poor beginner:
* As others mentioned your style of asking questions here is not good (see what Tom Deketelaere has written).
* Learn your language (VB.Net)!
* A "button to copy files" is user-view, you are a programmer now, so you won't find any "function-buttons" in your framework.
So after that said I'll try to help you anyway (at least in concept, try to find out how to write the code yourself!):
1. Check your requirements, as other said, file copy to this specific folders can be a security problem.
2. Add a Click handler to your copy button, then have a look to VisualStudio-Help (heard about it?) and
search for File.Copy method. Use it like in the example given in the VisualStudio-Help.
3. Move your hardcoded paths to settings or configuration file
@ exe without path - what you mean by that? Maybe you mean to add the execution path of your 392.exe (C:\Program Files\Imust\) to the environment variables (PATH) of your system?
Don't worry everyone started somehow, but my opinion is: first try to figure it out for yourself, then ask questions. With the internet, the rich framworks and documentations this is so easy today...
|
|
|
|
|
will thanks to all
ok first iam using win xp
iam going to use this program for my own
the reason iam making this program to make it easy to setup and install all needed .exe and dll. to play with joystick
this is the program
http://img835.imageshack.us/img835/3469/iplayp.jpg[^]
it has 4 button
install: install libusb-win32-filter-bin-0.1.10.1.exe to make the ps3 sixaxies work with windows xp
copy : to copy 2 files libusb0.dll and ps3sixaxis_en to C:\WINDOWS\system32 (to run ps3sixaxis_en when need to play with joystick)
Xpadder : is program to configure the needed button in the joystick (not mine)
exit : simple exit the program
the code i made is
_______________________________
Public Class Form1
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If Dir("C:\WINDOWS\system32\ps3sixaxis_en.exe") <> "" Then
MsgBox("installed successfully")
Else
MsgBox("File was not copied")
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
System.Diagnostics.Process.Start("C:\Program Files\Iplay\xpadder.exe")
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
End
End Sub
Private Sub Process1_Exited(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Label1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
System.Diagnostics.Process.Start("C:\Program Files\Iplay\libusb-Win32 Setup.exe")
End Sub
End Class
_________________________________________ _______________________________________________________________________
and the i used path
System.Diagnostics.Process.Start("C:\Program Files\Iplay\libusb-Win32 Setup.exe")
because i made setup installer to install (Xpadder and ps3sixaxis_en.exe and libusb0.dll & libusb-win32-filter-bin-0.1.10.1.exe ) to C:\Program Files\Iplay
when i said button that copy 2 file
(i meant the code it self) if there anyway that copy 2 files to C:\WINDOWS\system32
how you want me to wright a code while i dont know anything about the copy thing
(i started learning vb2010 2 day's ago)
thanks for the help
|
|
|
|
|
First, always try Google: http://www.google.com/search?q=copy+files+in+vb&hl=en
The first result of that search being: http://www.control.com/thread/1026222696
In which someone says "See the FileCopy method in VB.
The syntax is:
FileCopy SourceFile, DestinationFile".
Then, if that's not enough for you, back to Google:
http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=vb+FileCopy
which brings us to: http://msdn.microsoft.com/en-us/library/36xbexyf(v=VS.90).aspx
and if that's not enough for you then you probably shouldn't be using the internet.
Remember, always try Google.
|
|
|
|
|
Ok: First use the "code block"-tag in your messages on codeproject - this will format your code in a readable way.
@Copy: You didn't get my hint about File.Copy? Open VisualStudio-Help type File.Copy into the index-search field.
You will find examples for every .NET language...
I did it for you, and here is the example from VS-Help:
Imports System
Imports System.IO
Public Class Test
Public Shared Sub Main()
' Specify the directories you want to manipulate.
Dim path As String = "c:\temp\MyTest.txt"
Dim path2 As String = path + "temp"
Try
Dim fs As FileStream = File.Create(path)
fs.Close()
' Ensure that the target does not exist.
File.Delete(path2)
' Copy the file.
File.Copy(path, path2)
Console.WriteLine("{0} copied to {1}", path, path2)
' Try to copy the same file again, which should fail.
File.Copy(path, path2)
Console.WriteLine("The second Copy operation succeeded, which was not expected.")
Catch e As Exception
Console.WriteLine("The second Copy operation failed, as expected.")
End Try
End Sub
End Class
So If you don't know how to use the framework and language - first figure out where to find documentation or help (day 1). Try to experiment with your code, and you will learn a lot by "doing". Here on codeproject you can find "real experts", they will help you if you have a real problem (even if it is a "beginner-problem"), but not doing your "homework" will not help you to get good answeres here. The question-style: "I want you to solve my problem" doesn't work here!
Edit: Correction: Ok sometimes it works - Tom Foswick had compassion with you - and gave you a perfect answer while I wrote this.
|
|
|
|
|
Hi,
I won't tell you that you shouldn't do this or that your question is all wrong. I'll just try to give you an answer you can use.
There are a few nice built-in .NET methods for copying a file. Here are two:
IO.File.Copy(sourceFileName,destFileName)
My.Computer.FileSystem.CopyFile(sourceFileName,destinationFileName)
They both do the same thing, though I prefer the first example. The second example is not available if you are programming in C#, so it helps with portability not to use it.
Others have already warned you about the problems with hard-coding these paths and with possible/probable security problems in copying to your system directory
Now, with regards to your second question (running 392.exe) without knowing the path, the short answer is, "No", it is not possible.
The long answer is, "Yes", it is possible, but it is clunky. There are two strategies that I can think of. The first strategy involves environment variables, and someone else already talked about that. I wouldn't recommend that approach for a bunch of reasons.
The second approach involves searching for the file, then running it. The problems with this are:
- It is potentially quite slow. It could take a long time to find the file.
- It is potentially dangerous. If there was another file named "392.exe" that you didn't want to run, the code might find it and run it anyway.
However, the code for finding the file and running it would look something like this:
Private Function FindFile(ByVal fileName As String, ByVal searchDirectory As String) As String
Dim fullPath As String = ""
If Not IO.Directory.Exists(searchDirectory) Then Throw New IO.DirectoryNotFoundException
fullPath = IO.Path.Combine(searchDirectory, fileName)
If Not IO.File.Exists(fullPath) Then
fullPath = ""
Try
For Each subDirectory As String In IO.Directory.GetDirectories(searchDirectory)
fullPath = FindFile(fileName, subDirectory)
If fullPath <> "" Then Exit For
Next
Catch uaException As UnauthorizedAccessException
fullPath = ""
End Try
End If
Return fullPath
End Function
This function will search all subdirectories to which your app has access for the file in question. You would use it like this:
myFile = FindFile("392.exe", "C:\")
If IO.File.Exists(myFile) Then Process.Start(myFile)
This would search all directories and subdirectories of C:\ for a file called "392.exe". If it finds it, it will return the full path to that file and set myFile to that path. Otherwise, it will return "", and myFile will be "". We check to see if myFile exists, and if so, we run it.
Now, as you can imagine, this could take a while. So, it is best not to unleash FindFile() on your C:\ root directory. Better to narrow it down a bit. .NET provides some really nice built-in functions for doing this. For example, if you just want to search all through the Program Files directory (and subdirectories), try:
myFile = FindFile("392.exe", Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles))
The function Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) will return the full path to the computer's Program Files directory, regardless of where that happens to be. You can reference other special folders in that same way. That is just one example.
Best of luck.
|
|
|
|
|
Thank you all
that helped me a lot
|
|
|
|
|