|
Is your .DLL, it's classes, methods and properties, exposed to COM when you compiled it? Does each object have it's own CLSID?
I love this link, specifically for this very question: Exposing .NET Framework Components to COM[^]
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
So I tried this:
Dim objWSH As Object : objWSH = CreateObject("WScript.Shell")
Call objWSH.Run("'" & Application.StartupPath & "\help_files\Potato_Traceability_User_Guide.pdf" & "'")
'objWSH = Nothing
Which works fine while in debug mode. But when the install is compiled and then installed to c:\Program Files\asdf
The file cannot be found.
(but other files in the same directory of RTF format can be loaded into a rich text box control?)
So I tried:
Dim objWSH As Object : objWSH = CreateObject("WScript.Shell")
mypath = Application.StartupPath.Replace("\", "\\")
mypath = mypath.Replace(" ", "%20")
Call objWSH.Run("'" & mypath & "\\help_files\\Potato_Traceability_User_Guide.pdf" & "'")
'objWSH = Nothing
and a couple of other variations....
what should have taken 10 minutes, I am now 2 hours on...can someone help or let me know what it is that I am doing wrong?
|
|
|
|
|
Try this;
MyPath = Application.StartupPath.ToString
Shell(MyPath + "\Potato_Traceability_User_Guide.pdf")
|
|
|
|
|
Onderack wrote: Application.StartupPath.ToString
Why are you calling .ToString on something that is already a String???
And path handling is better left up to the Path class. Concantenating strings together can be problematic.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I'm assuming you're using VB.NET, and not VB6. That being said,
Why are you starting an outside app using Windows Scripting Host? The Process class gives you much more control and information. Also, path handling is MUCH easier if you use the Path class.
Imports System.Io
.
.
.
Dim cmdLine As String = Path.Combine(Application.StartupPath, "\help_files\Potato.pdf")
Dim newProcess As New Process()
newProcess.StartInfo.Filename = cmdLine
newProcess.StartInfo.UseShellExecute = True
newProcess.Start()
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I was basically trying anything at that point.
Yes, VB.net 2003...
The code I was using was something that I had jotted down somewhere...sometime ago..
So I used the code you provided with one exception.
Dim newProcess As New Process<br />
newProcess.StartInfo.FileName = Application.StartupPath & "\help_files\Potato_Traceability_User_Guide.pdf"<br />
newProcess.StartInfo.UseShellExecute = True<br />
newProcess.Start()
The Path.Combine(Application.StartupPath, "\help_files\Potato_Traceability_User_Guide.pdf")
did not seem to work. It only sent "\help_files\Potato_Traceability_User_Guide.pdf" ?
Thanks.
|
|
|
|
|
Actually, it should be
Dim filePath As String
filePath = Path.Combine(Application.StartupPath, "help_files")
filePath = Path.Combine(filePath, "Potato_Traceability_User_Guide.pdf")
This is, of course, assuming that help_files is a subdirectory of the StartupPath. Use Debug.WriteLine statements to figure out what StartUp path is returning.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hello!
Would you please give me a push to conver the following C dode to Visual basic. It is realted to WAB entry and thi sis the only sample I have found it so far so good but I do not have enough C programming knowledge. So I am seeking one expert to come over the hassle..
Thank You!
// main.h
#include <windows.h>
#include <crtdbg.h>
#include <iostream.h>
#include <wab.h>
typedef HRESULT (WINAPI *fWABOpen)(LPADRBOOK*,LPWABOBJECT*,LPWAB_PARAM,DWORD);
int main()
{
HRESULT hRes;
LPADRBOOK lpAdrBook;
LPWABOBJECT lpWABObject;
LPWAB_PARAM lpWABParam = NULL;
DWORD Reserved2 = NULL;
HINSTANCE hinstLib;
hinstLib = LoadLibrary("C:\\Program Files\\Common Files\\System\\wab32");
fWABOpen procWABOpen;
if (hinstLib != NULL)
{
procWABOpen = (fWABOpen) GetProcAddress(hinstLib, "WABOpen");
if (procWABOpen != NULL)
{
hRes = (procWABOpen)(&lpAdrBook,&lpWABObject,NULL,Reserved2);
_ASSERTE(hRes == S_OK);
if (hRes != S_OK) exit(1);
//lpWABObject->Find(lpAdrBook,NULL);
ULONG lpcbEntryID;
ENTRYID *lpEntryID;
hRes = lpAdrBook->GetPAB(
&lpcbEntryID,
&lpEntryID
);
_ASSERTE(hRes == S_OK);
if (hRes != S_OK) exit(2);
ULONG ulFlags = MAPI_BEST_ACCESS;
ULONG ulObjType = NULL;
LPUNKNOWN lpUnk = NULL;
hRes = lpAdrBook->OpenEntry(
lpcbEntryID,
lpEntryID,
NULL,
ulFlags,
&ulObjType,
&lpUnk
);
ulFlags = NULL;
//IABTable *lpTable;
if (ulObjType == MAPI_ABCONT)
{
IABContainer *lpContainer = static_cast <iabcontainer *="">(lpUnk);
LPMAPITABLE lpTable = NULL;
hRes = lpContainer->GetContentsTable(
ulFlags,
&lpTable
);
_ASSERT(lpTable);
ULONG ulRows;
hRes = lpTable->GetRowCount(0,&ulRows);
_ASSERTE(hRes == S_OK);
cout << "Rows " << ulRows << endl;
SRowSet *lpRows;
hRes = lpTable->QueryRows(
ulRows, // Get all Rows
0,
&lpRows
);
for(ULONG i=0;i<lprows->cRows;i++)
{
SRow *lpRow = &lpRows->aRow[i];
cout << i << " : " << lpRow->cValues << endl;
for(ULONG j=0;j<lprow->cValues;j++)
{
SPropValue *lpProp = &lpRow->lpProps[j];
cout << "\t" << j << " : " << (void*)lpProp->ulPropTag << " : ";
if (lpProp->ulPropTag == PR_DISPLAY_NAME_A)
cout << "Display Name: " << lpProp->Value.lpszA;
if (lpProp->ulPropTag == PR_EMAIL_ADDRESS_A)
cout << "Email Address: " << lpProp->Value.lpszA;
if (lpProp->ulPropTag == PR_NICKNAME_A)
cout << "Nickname: " << lpProp->Value.lpszA;
if (lpProp->ulPropTag == PR_ADDRTYPE_A)
cout << "Addrtype: " << lpProp->Value.lpszA;
cout << endl;
}
lpWABObject->FreeBuffer(lpRow);
}
lpWABObject->FreeBuffer(lpRows);
}
}
FreeLibrary(hinstLib);
}
return 0;
}
help is a mutual shared reality!
|
|
|
|
|
B Journey,
The code you have posted is only a "snippet" of the work you will
have to do, The mapi32 parts, and other parts of the code, are all missing, I am currently converting the full code in my spare time, the full C source code can be found here:
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/messaging/wabtool/default.asp[^]
I'll be more than glad to share the code conversion work with you, but it's taking me awhile to do it, as I can only work on it in my spare time, and a piece at a time. This code as far as I can tell has not been converted by anyone yet, or at least I haven't ever found it, and I've looked everywhere I can think of.(Not to mention Difficult to convert)
If you like, contact me though my email link and I'll try to help with what I can.
Progload
|
|
|
|
|
Greetings All!
I have a newbie question here that I hope someone can help me with. My best friend google turned up no results for this question with a very simple answer im sure.
Currently I have a logon script i'm placing in my Active Directory to log times clocked in and time clocked out based on logins and logouts on the domain. the script I currently have is as follows.
Dim objNet<br />
On Error Resume Next <br />
<br />
Set objNet = CreateObject("WScript.NetWork") <br />
<br />
<br />
Dim strInfo<br />
strInfo = "User Name is " & objNet.UserName & vbCRLF & _<br />
"Computer Name is " & objNet.ComputerName & vbCRLF & _<br />
"Domain Name is " & objNet.UserDomain<br />
<br />
<br />
<br />
Dim TextFile<br />
Dim FSO <br />
Dim Current<br />
Set FSO = CreateObject("Scripting.FileSystemObject")<br />
Set TextFile = FSO.OpenTextFile("C:\Work\blahj.txt", 2, True)<br />
<br />
<br />
TextFile.Writeline strInfo<br />
<br />
Set TextFile = Nothing<br />
Set FSO = Nothing<br />
<br />
<br />
<br />
<br />
<br />
<br />
Set objNet = Nothing 'Destroy the Object to free the Memory
It works great, and eventually i will have it write to a sql database. But for now, my question is this
How do I call the date and time? Is there a function to do this?
I just need something that would look like this
dim strTime<br />
strTime = *function that calls time & date*
Anyone got the answer?
thanks!
"A child of five would understand this! Send someone to fetch a child of five!"-Groucho Marx
Hack. -n. "A clever solution to an interesting problem."
|
|
|
|
|
|
Hi,
I need to run the application in systemt tray (systray) .I need some guidance in the form of
some example. Also I need to display some messages in the systray. for example when we use
MSN Messenger and if somebody come online we see "Mr.xyz Logged in" .
I need it immediately. any help'll be appreciable.
Thanks
|
|
|
|
|
You would need to use the NotifyIcon to get your app to show in the system tray.
As far as the notification, just use a new form for a popup.
-Jason
|
|
|
|
|
Just try in google for NotifyIconXP written by Hans Blomme.
Mauricio
|
|
|
|
|
how can i access the Menu Item Name Property through code
|
|
|
|
|
If you have added a contextmenu on your form, you should be able to access to each menu item's property eg:
menuitem1.text = "Hello!"
|
|
|
|
|
I want to access Name Property my code is as:
<br />
Dim mnuItem As MenuItem <br />
For Each mnuItem In OfrmMain.mnu_Main.MenuItems<br />
If mnuItem.Name ="NameofMenu" Then<br />
'Do some thing<br />
End If<br />
Next<br />
Regards
|
|
|
|
|
Hello Javed! you have confused me! )
Your code is okay there is no error. If your are still not able to get the menu name that means you have to check your contextmenu name to make sure you are tryign to use the right menu collection. mnuItem.Name must return a value as you have defined in your code. If you have more than one menu collection make sure you have pointed to right collection. Otherwise, re-check the menu name which you have tried in seeking its equality to mnuItem.Name..
Take it easy!
|
|
|
|
|
My Friend
Problem is this that Menu Object dos't expose the "Name" Property....
Regards
|
|
|
|
|
Of course. There is no Name property for a MenuItem . If you can't set one, why would you be looking to read it? You can, however read its Text property.
Doing what you're looking at in your sample code is not good practice. Each menuitem should handle its own Click event.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thanks for ur response.
Actually i want to implement user security. My working is as:
I will make Roles and Role will be given rights to access "MENU" and user will be assign the role.
Now i want to write a code which show all the menus in a grid i want to save the NAME of the MENU in a hidden column which will be saved in the database. Now i have decided to save the Menu Text in database which i know can cause problem becuase if menu text is changed it will have to be changed in database too. As menu item name is not changed so if it is saved it will cuase no problem...
hope u will have got my point if u have any better suggestion will be benificial for me.
Regards
Javed
|
|
|
|
|
as i execute following command to insert a record in VB 6.0
"Insert into login_master values('" & gen_log_id(cmbCompanyName.Text, cmbLoginName.Text) & "' , '" & cmbLoginName.Text & "','" & txtPassword.Text & "','" & cmbLoginLevel.Text & "','" & txtStatus.Text & "','" & cmbCompanyName.Text & "','Admin',GETDATE(),'admin',GETDATE())"
i get a message that "string or binary data would be truncated"
what that means?
|
|
|
|
|
the length of the field u r sending is greater than the length of the field in table e.g. if u send "ABCD" in field "fld varchar(3)" then this error will be shown. Incrase ur field size it will run fine.
Regards
Javed
|
|
|
|
|
Hi Guys! Im trying to use a dll in my Project in VB.NET. But the problem is that when i run the program in debug mode, i get an error saying that the source files of the dll are not present in the path where they were when the dll was created. How do i rectify this error. It asks me for the new path which i have to give everytime i debug my Program. Please tell me how i can change the source file path of the dll to the path where i have the source files. Thanx. Waiting for an Answer Soon. Bye!!
Devraj Raut!!!
|
|
|
|
|
You can't change the source path.
You're problem seems to be that your still developing the .DLL and, compiled it into a Debug version, and in the project you're using it in, you've set a reference to the .DLL file. You should be setting the reference to the .DLL PROJECT instead. Add the .DLL project to the same solution that your consumer project is in. In the consumer project, add a reference to the .DLL project. Now every time you compile the code, the .DLL project will get recompiled, if needed, and the soruce files used in debugging will be handled automatically.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|