I too have a similar issue; I need to be able to interrogate the output of a query/procedure that I don't own (customer provided); that output is then aggregated and charted. Ultimately, I need to take the output of someone else's procedure, drop it in my own table, and then manipulate the data from there. This is actually easy to do, unless, the procedure uses temp tables.
Tibor, if I take your answer, tweak it to match the #TempTable is a special case issue, then the problem is visible. Neither FMTONLY nor sp_describe_first_result_set will survive if the procedure includes a temp table.
ex:
CREATE OR ALTER PROC p
@i tinyint
AS
SELECT object_id, name
into #TempTable
FROM sys.objects
where type = 'S';
IF @i = 1
BEGIN
SELECT top 10 * from #TempTable
END
ELSE
BEGIN
SELECT * from #TempTable
END
GO
--lets examine the meta data...
exec sp_describe_first_result_set N'exec p @i = 1',null,0
SET FMTONLY ON
EXEC p @i = 1
SET FMTONLY ON
Now, If I take that example and expand it to the "take the output of your procedure and dump that into my table", you can see where the temp table issue takes things sideways:
declare @Cmd varchar(1000),
@ExecCmd varchar(100);
if object_id(N'..JustForFun') is not null
drop table JustForFun;
set @ExecCmd = 'EXEC master.dbo.sp_who';
set @Cmd = 'SELECT * INTO JustForFun FROM OPENROWSET(''SQLNCLI'',''SERVER=' + @@SERVERNAME + ';Trusted_Connection=yes;'','
+ '''' + @ExecCmd + ''')'
exec(@Cmd);
select * from JustForFun
go
--Now lets try that with the procedure with a temp table...
declare @Cmd varchar(1000),
@ExecCmd varchar(100);
if object_id(N'..JustForFun') is not null
drop table JustForFun;
set @ExecCmd = 'Exec ' + db_name() + '.dbo.p @i = 1'
set @Cmd = 'SELECT * INTO JustForFun FROM OPENROWSET(''SQLNCLI'',''SERVER=' + @@SERVERNAME + ';Trusted_Connection=yes;'','
+ '''' + @ExecCmd + ''')'
exec(@Cmd);
The sp_who call works as expected. The call to procedure p with a temp table:

The only workaround I've found is as White Owl suggested; exec the procedure in code, grab the schema def from the ADO class objects, explicitly create a temp table, then insert the results of the procedure (executed again) into that table with an insert into tabname exec(@Cmd);
In short, there appears to be no way to redirect the output of a procedure,if that procedure uses a temp table, into a table like you can with conventional INSERT INTO ... syntax. You also cannot interrogate the meta data with any of the mentioned schema tools.